code: func CloseAfterContext(p goprocess.Process, ctx context.Context) {
  	if p == nil {
  		panic("nil Process")
  	}
  	if ctx == nil {
  		panic("nil Context")
  	}
  
  	// context.Background(). if ctx.Done() is nil, it will never be done.
  	// we check for this to avoid wasting a goroutine forever.
  	if ctx.Done() == nil {
  		return
  	}
  
  	go func() {
  		<-ctx.Done()
  		p.Close()
  	}()
  }
docs: // CloseAfterContext schedules the process to close after the given
  // context is done. It is the equivalent of:
  //
  //   func CloseAfterContext(p goprocess.Process, ctx context.Context) {
  //     go func() {
  //       <-ctx.Done()
  //       p.Close()
  //     }()
  //   }
  //