code: func dualStream(w1 io.Writer, r1 io.Reader, w2 io.Writer, r2 io.Reader) error {
  	errChan := make(chan error)
  
  	stream := func(w io.Writer, r io.Reader) {
  		buf := bufferPool.Get().([]byte)
  		buf = buf[0:cap(buf)]
  		_, _err := flushingIoCopy(w, r, buf)
  		errChan <- _err
  	}
  
  	go stream(w1, r1)
  	go stream(w2, r2)
  	err1 := <-errChan
  	err2 := <-errChan
  	if err1 != nil {
  		return err1
  	}
  	return err2
  }
docs: // Copies data r1->w1 and r2->w2, flushes as needed, and returns when both streams are done.