class Redis::Client

def blocking_call_v(timeout, command, &block)

def blocking_call_v(timeout, command, &block)
  if timeout && timeout > 0
    # Can't use the command timeout argument as the connection timeout
    # otherwise it would be very racy. So we add the regular read_timeout on top
    # to account for the network delay.
    timeout += config.read_timeout
  end
  super(timeout, command, &block)
rescue ::RedisClient::Error => error
  Client.translate_error!(error)
end

def call_v(command, &block)

def call_v(command, &block)
  super(command, &block)
rescue ::RedisClient::Error => error
  Client.translate_error!(error)
end

def config(**kwargs)

def config(**kwargs)
  super(protocol: 2, **kwargs)
end

def db

def db
  config.db
end

def disable_reconnection(&block)

def disable_reconnection(&block)
  ensure_connected(retryable: false, &block)
end

def host

def host
  config.host unless config.path
end

def id

def id
  config.id
end

def inherit_socket!

def inherit_socket!
  @inherit_socket = true
end

def multi

def multi
  super
rescue ::RedisClient::Error => error
  Client.translate_error!(error)
end

def password

def password
  config.password
end

def path

def path
  config.path
end

def pipelined

def pipelined
  super
rescue ::RedisClient::Error => error
  Client.translate_error!(error)
end

def port

def port
  config.port unless config.path
end

def sentinel(**kwargs)

def sentinel(**kwargs)
  super(protocol: 2, **kwargs, client_implementation: ::RedisClient)
end

def server_url

def server_url
  config.server_url
end

def timeout

def timeout
  config.read_timeout
end

def translate_error!(error)

def translate_error!(error)
  redis_error = translate_error_class(error.class)
  raise redis_error, error.message, error.backtrace
end

def translate_error_class(error_class)

def translate_error_class(error_class)
  ERROR_MAPPING.fetch(error_class)
rescue IndexError
  if (client_error = error_class.ancestors.find { |a| ERROR_MAPPING[a] })
    ERROR_MAPPING[error_class] = ERROR_MAPPING[client_error]
  else
    raise
  end
end

def username

def username
  config.username
end