code: func NewContext(ctx context.Context) (Reader, context.Context, func()) {
  	pr, pw, cancel := pipe()
  	ctx = WithProgress(ctx, pw)
  	return pr, ctx, cancel
  }
docs: // NewContext returns a new context and a progress reader that captures all
  // progress items writtern to this context. Last returned parameter is a closer
  // function to signal that no new writes will happen to this context.