code: func (c *Client) Do(req *Request) (*http.Response, error) {
  	hreq, err := req.HTTPRequest()
  	if err != nil {
  		return nil, &RestError{Req: hreq, err: fmt.Errorf("error preparing request: %s", err)}
  	}
  
  	if !c.KeepAlives {
  		hreq.Close = true
  	}
  
  	// Internally, this uses c.Driver's CheckRedirect policy.
  	resp, err := c.Driver.Do(hreq)
  	if err != nil {
  		if opErr, ok := err.(*net.OpError); ok {
  			if opErr.Timeout() {
  				return nil, &RestError{Req: hreq, err: fmt.Errorf("timed out making request")}
  			}
  		}
  		return resp, &RestError{Req: hreq, Resp: resp, err: fmt.Errorf("error sending request: %s", err)}
  	}
  	if resp.StatusCode < 200 || resp.StatusCode >= 300 {
  		return resp, &RestError{Req: hreq, Resp: resp, err: fmt.Errorf("error in response: %s", resp.Status)}
  	}
  	return resp, nil
  }
docs: // Do performs the HTTP request described by req and returns the *http.Response.
  // Also returns a non-nil *RestError if an error occurs or the response is not
  // in the 2xx family.