code: func (wrself *WriterToReaderAdapter) Close() error {
  	if wrself.closed {
  		panic("Double close on WriterToReaderAdapter")
  	}
  	wrself.workChan <- nil
  	close(wrself.workChan)
  	wrself.closed = true
  	closeErr := wrself.getErrors()
  	close(wrself.doneWorkChan) // once they've sent closing err, they won't be touching this
  	return closeErr
  }
docs: // Close must be called, even if there's an error during Write,
  // to clean up all goroutines and resources
  // This function shuts down the Writer, which will deliver
  // an io.EOF to the reader class. It then blocks until the
  // downstream writer has been passed a close and returns any errors
  // from the downstream Close (or any pending errors from final reads
  // that  were triggered by the io.Reader to be adapted)