class Faraday::Adapter::Typhoeus

def request(env)

def request(env)
  read_body env
  req = ::Typhoeus::Request.new(
    env[:url].to_s,
    :method  => env[:method],
    :body    => env[:body],
    :headers => env[:request_headers]
  )
  configure_ssl     req, env
  configure_proxy   req, env
  configure_timeout req, env
  configure_socket  req, env
  req.on_complete do |resp|
    if resp.timed_out?
      if parallel?(env)
        # TODO: error callback in async mode
      else
        raise Faraday::Error::TimeoutError, "request timed out"
      end
    end
    save_response(env, resp.code, resp.body) do |response_headers|
      response_headers.parse resp.response_headers
    end
    # in async mode, :response is initialized at this point
    env[:response].finish(env) if parallel?(env)
  end
  req
end