class Sidekiq::Rescue::ServerMiddleware

def rescue_error(error, error_group, options, job_payload)

def rescue_error(error, error_group, options, job_payload)
  delay, limit = options.fetch_values(:delay, :limit)
  rescue_counter = increment_rescue_counter_for(error_group, job_payload)
  raise error if rescue_counter > limit
  reschedule_at = calculate_reschedule_time(delay, rescue_counter)
  log_reschedule_info(rescue_counter, error, reschedule_at)
  reschedule_job(job_payload: job_payload, reschedule_at: reschedule_at, rescue_counter: rescue_counter,
                 error_group: error_group)
end