code: func drainBody(b io.ReadCloser) (r1, r2 io.ReadCloser, err error) {
  	var buf bytes.Buffer
  	if _, err = buf.ReadFrom(b); err != nil {
  		return nil, nil, err
  	}
  	if err = b.Close(); err != nil {
  		return nil, nil, err
  	}
  	return ioutil.NopCloser(&buf), ioutil.NopCloser(bytes.NewReader(buf.Bytes())), nil
  }
docs: // One of the copies, say from b to r2, could be avoided by using a more
  // elaborate trick where the other copy is made during Request/Response.Write.
  // This would complicate things too much, given that these functions are for
  // debugging only.