code: func NewContextReader(ctx context.Context, r io.Reader) io.Reader {
  	return ctxio.NewReader(ctx, r)
  }
docs: // NewContextReader wraps a reader to make it respect given Context.
  // If there is a blocking read, the returned Reader will return whenever the
  // context is cancelled (the return values are n=0 and err=ctx.Err()).