diff --git a/merkledag/merkledag.go b/merkledag/merkledag.go index 197785d39ef..c7a6296daee 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():