code: func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {
  	c := newCancelCtx(parent)
  	propagateCancel(parent, &c)
  	return &c, func() { c.cancel(true, Canceled) }
  }
docs: // WithCancel returns a copy of parent with a new Done channel. The returned
  // context's Done channel is closed when the returned cancel function is called
  // or when the parent context's Done channel is closed, whichever happens first.
  //
  // Canceling this context releases resources associated with it, so code should
  // call cancel as soon as the operations running in this Context complete.