For the lifetime of the process, `Excon::Utils` won't change if it responds to `:request_uri`, so it seems a bit wasteful to re-check that condition each time here.  Instead, I would favor this:

``` ruby
if ::Excon::Utils.repsond_to?(:request_uri)
  def uri
    @uri ||= "#{::Excon::Utils.request_uri(request_params)}"
  end
else
  def uri
    @uri ||= "#{request_params[:scheme]}://#{request_params[:host]}:#{request_params[:port]}#{request_params[:path]}#{query}"
  end
end
```

That way, the conditional is only evaluated once (at file load time) rather than N times (e.g. once per request).