class Faraday::Adapter::Excon
def call(env)
def call(env) super req_opts = { method: env[:method].to_s.upcase, headers: env[:request_headers], body: read_body(env) } req = env[:request] if req&.stream_response? total = 0 req_opts[:response_block] = lambda do |chunk, _remain, _total| req.on_data.call(chunk, total += chunk.size) end end resp = connection(env) { |http| http.request(req_opts) } save_response(env, resp.status.to_i, resp.body, resp.headers, resp.reason_phrase) @app.call(env) rescue ::Excon::Errors::SocketError => e raise Faraday::TimeoutError, e if e.message.match?(/\btimeout\b/) raise Faraday::SSLError, e if e.message.match?(/\bcertificate\b/) raise Faraday::ConnectionFailed, e rescue ::Excon::Errors::Timeout => e raise Faraday::TimeoutError, e end