code: func (bufPool *BufioReaderPool) NewReadCloserWrapper(buf *bufio.Reader, r io.Reader) io.ReadCloser {
  	return ioutils.NewReadCloserWrapper(r, func() error {
  		if readCloser, ok := r.(io.ReadCloser); ok {
  			readCloser.Close()
  		}
  		bufPool.Put(buf)
  		return nil
  	})
  }
docs: // NewReadCloserWrapper returns a wrapper which puts the bufio.Reader back
  // into the pool and closes the reader if it's an io.ReadCloser.