code: func RequestWithTransport(req *http.Request, timeout time.Duration, transport *http.Transport, conditions ...ResponseCondition) error {
  	resp, err := doTryRequest(req, timeout, transport, conditions...)
  
  	if resp != nil && resp.Body != nil {
  		defer resp.Body.Close()
  	}
  
  	return err
  }
docs: // RequestWithTransport is like Do, but runs a request against the given URL and applies
  // the condition on the response.
  // ResponseCondition may be nil, in which case only the request against the URL must
  // succeed.