From 08388e739a2e196e35f823463369ca805c098bcf Mon Sep 17 00:00:00 2001
From: Steven Allen <steven@stebalien.com>
Date: Tue, 27 Mar 2018 16:48:59 -0700
Subject: [PATCH] only visit nodes in EnumerateChildrenAsync when asked

No idea why this was changed this was introduced in:

08f342e8bada4f4eb0c5462a3623f0c2b828240f (part of #3598)

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
---
 merkledag/merkledag.go | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/merkledag/merkledag.go b/merkledag/merkledag.go
index 197785d39..c7a6296da 100644
--- a/merkledag/merkledag.go
+++ b/merkledag/merkledag.go
@@ -319,17 +319,17 @@ func EnumerateChildrenAsync(ctx context.Context, getLinks GetLinks, c *cid.Cid,
 	for i := 0; i < FetchGraphConcurrency; i++ {
 		go func() {
 			for ic := range feed {
-				links, err := getLinks(ctx, ic)
-				if err != nil {
-					errChan <- err
-					return
-				}
-
 				setlk.Lock()
-				unseen := visit(ic)
+				shouldVisit := visit(ic)
 				setlk.Unlock()
 
-				if unseen {
+				if shouldVisit {
+					links, err := getLinks(ctx, ic)
+					if err != nil {
+						errChan <- err
+						return
+					}
+
 					select {
 					case out <- links:
 					case <-fetchersCtx.Done():