class Faraday::Middleware

Middleware is the basic base class of any Faraday middleware.

def call(env)

def call(env)
  on_request(env) if respond_to?(:on_request)
  app.call(env).on_complete do |environment|
    on_complete(environment) if respond_to?(:on_complete)
  end
rescue StandardError => e
  on_error(e) if respond_to?(:on_error)
  raise
end

def close

def close
  if app.respond_to?(:close)
    app.close
  else
    warn "#{app} does not implement \#close!"
  end
end

def default_options

subclass defaults
with the values of any Faraday::Middleware defaults, and merges with
default_options attr_reader that initializes class instance variable
def default_options
  @default_options ||= DEFAULT_OPTIONS.merge(self::DEFAULT_OPTIONS)
end

def default_options=(options = {})

Other tags:
    Example: Set the Faraday::Response::RaiseError option, `include_request` to `false` -
def default_options=(options = {})
  validate_default_options(options)
  LOCK.synchronize do
    @default_options = default_options.merge(options)
  end
end

def initialize(app = nil, options = {})

def initialize(app = nil, options = {})
  @app = app
  @options = self.class.default_options.merge(options)
end

def validate_default_options(options)

def validate_default_options(options)
  invalid_keys = options.keys.reject { |opt| self::DEFAULT_OPTIONS.key?(opt) }
  return unless invalid_keys.any?
  raise(Faraday::InitializationError,
        "Invalid options provided. Keys not found in #{self}::DEFAULT_OPTIONS: #{invalid_keys.join(', ')}")
end