def call(worker, msg, queue)
      rate_limit = RateLimit.new(worker, msg['args'], queue, @options)

      rate_limit.within_bounds do
        yield
      end

      rate_limit.exceeded do |delay|
        worker.class.perform_in(delay, *msg['args'])
      end

      rate_limit.execute
    end
def call(worker, msg, queue)
      rate_limit = RateLimit.new(worker, msg['args'], queue, @options)

      rate_limit.within_bounds do
        yield
      end

      rate_limit.exceeded do |delay|
        worker.class.perform_in(delay, *msg['args'])
      end

      rate_limit.execute
    end
Passes the worker, arguments, and queue to {RateLimit} and either yields
 or requeues the job depending on whether the worker is throttled.

 @param [Sidekiq::Worker] worker
   The worker the job belongs to.

 @param [Hash] msg
   The job message.

 @param [String] queue
   The current queue.