# File lib/faraday/adapter/net_http.rb, line 30
      def call(env)
        super
        with_net_http_connection(env) do |http|
          configure_ssl(http, env[:ssl]) if env[:url].scheme == 'https' and env[:ssl]

          req = env[:request]
          http.read_timeout = http.open_timeout = req[:timeout] if req[:timeout]
          http.open_timeout = req[:open_timeout]                if req[:open_timeout]

          begin
            http_response = perform_request(http, env)
          rescue *NET_HTTP_EXCEPTIONS => err
            if defined?(OpenSSL) && OpenSSL::SSL::SSLError === err
              raise Faraday::SSLError, err
            else
              raise Error::ConnectionFailed, err
            end
          end

          save_response(env, http_response.code.to_i, http_response.body || '') do |response_headers|
            http_response.each_header do |key, value|
              response_headers[key] = value
            end
          end
        end

        @app.call env
      rescue Timeout::Error, Errno::ETIMEDOUT => err
        raise Faraday::Error::TimeoutError, err
      end