class Sidekiq::Rescue::ServerMiddleware

def rescue_error(error, error_group, options, job_payload)

def rescue_error(error, error_group, options, job_payload)
  delay, limit, jitter = options.fetch_values(:delay, :limit, :jitter)
  queue = options.fetch(:queue, job_payload["queue"])
  rescue_counter = increment_rescue_counter_for(error_group, job_payload)
  raise error if rescue_counter > limit
  calculated_delay = calculate_delay(delay, rescue_counter, jitter)
  log_reschedule_info(rescue_counter, error, calculated_delay)
  reschedule_job(job_payload:, delay: calculated_delay, rescue_counter:,
                 error_group:, queue:)
end