code: func getResponse(r io.Reader) (*http.Response, []byte, error) {
  	rawResponse := bytes.NewBuffer(make([]byte, 0, 256))
  	// Save the bytes read while reading the response headers into the rawResponse buffer
  	resp, err := http.ReadResponse(bufio.NewReader(io.TeeReader(r, rawResponse)), nil)
  	if err != nil {
  		return nil, nil, err
  	}
  	// return the http response and the raw bytes consumed from the reader in the process
  	return resp, rawResponse.Bytes(), nil
  }
docs: // getResponseCode reads a http response from the given reader, returns the response,
  // the bytes read from the reader, and any error encountered