code: func (rwaself *ReaderToWriterAdapter) Close() error {
  	var wCloseErr error
  	var rCloseErr error
  	if writeCloser, ok := rwaself.writer.(io.WriteCloser); ok {
  		if !rwaself.closedWriter {
  			wCloseErr = writeCloser.Close()
  		}
  	}
  	if readCloser, ok := rwaself.upstream.(io.ReadCloser); ok {
  		rCloseErr = readCloser.Close()
  	} else {
  		rCloseErr = rwaself.drain()
  	}
  	if rCloseErr != nil && rCloseErr != io.EOF {
  		return rCloseErr
  	}
  	if wCloseErr != nil && wCloseErr != io.EOF {
  		return wCloseErr
  	}
  	return nil
  }
docs: // interrupt the read by closing all resources