code: func (n *Node) WithContext(ctx context.Context) (context.Context, context.CancelFunc) {
  	ctx, cancel := context.WithCancel(ctx)
  
  	go func() {
  		select {
  		case <-ctx.Done():
  		case <-n.stopped:
  			cancel()
  		}
  	}()
  	return ctx, cancel
  }
docs: // WithContext returns context which is cancelled when parent context cancelled
  // or node is stopped.