class Faraday::Adapter::Typhoeus

def request(env)

def request(env)
  read_body env
  req = typhoeus_request(env)
  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?
      env[:typhoeus_timed_out] = true
      unless parallel?(env)
        raise Faraday::TimeoutError, "request timed out"
      end
    elsif (resp.response_code == 0) || ((resp.return_code != :ok) && !resp.mock?)
      env[:typhoeus_connection_failed] = true
      env[:typhoeus_return_message] = resp.return_message
      unless parallel?(env)
        raise Faraday::ConnectionFailed, resp.return_message
      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