code: func (dr *DescribeRequest) StartDescribe(ctx context.Context, br blob.Ref, depth int) {
  	if depth <= 0 {
  		return
  	}
  	dr.mu.Lock()
  	defer dr.mu.Unlock()
  	if dr.blobDesLock == nil {
  		dr.blobDesLock = make(map[blob.Ref]*sync.Mutex)
  	}
  	desBlobMu, ok := dr.blobDesLock[br]
  	if !ok {
  		desBlobMu = new(sync.Mutex)
  		dr.blobDesLock[br] = desBlobMu
  	}
  	if dr.started == nil {
  		dr.started = make(map[blobrefAndDepth]bool)
  	}
  	key := blobrefAndDepth{br, depth}
  	if dr.started[key] {
  		return
  	}
  	dr.started[key] = true
  	dr.wg.Add(1)
  	go func() {
  		defer dr.wg.Done()
  		desBlobMu.Lock()
  		defer desBlobMu.Unlock()
  		dr.doDescribe(ctx, br, depth)
  	}()
  }
docs: // StartDescribe starts a lookup of br, down to the provided depth.
  // It returns immediately. One should call Result to wait for the description to
  // be completed.