code: func (rt *DefaultRequestDoer) Do(ctx context.Context, r *http.Request,
  	v interface{}) (*http.Response, error) {
  
  	resp, err := rt.Client.Do(r)
  	if err != nil {
  		return nil, err
  	}
  
  	defer resp.Body.Close()
  
  	err = checkResponseCode(resp)
  	if err != nil {
  		return resp, err
  	}
  
  	if v != nil {
  		dec := json.NewDecoder(resp.Body)
  		err = dec.Decode(v)
  		if err != nil {
  			return nil, err
  		}
  	}
  
  	return resp, nil
  }
docs: // Do executes an http.Request, populating v with the JSON response
  // on success.
  //
  // If the request errors with a JSON formatted response body, it will be
  // unmarshaled into the returned error.