code: func (w *Wrapped) Cancel() error {
  	w.once.Do(w.init)
  	w.cancelLock.Lock()
  
  	// If we have a result set, return that
  	if w.resultSet {
  		w.cancelLock.Unlock()
  		return w.resultErr
  	}
  
  	// If we have a cancel channel, close it to signal and set it to
  	// nil so we never do that again.
  	if w.cancelCh != nil {
  		close(w.cancelCh)
  		w.cancelCh = nil
  	}
  
  	// Wait for the result to be set
  	defer w.cancelLock.Unlock()
  	w.cancelCond.Wait()
  	return w.resultErr
  }
docs: // Cancel stops the running function and blocks until it returns. The
  // resulting value is returned.
  //
  // It is safe to call this multiple times. This will return the resulting
  // error value each time.