Fix incorrect behaviour due to too much cached state in Sidekiq::RateLimiter::Fetch.
Fix incorrect behaviour due to too much cached state in Sidekiq::RateLimiter::Fetch.

Fetch was storing memoized rate data across jobs, causing rates specified for one job to be applied to another. Fixed this by factoring out a Rate class that can be used to store memoized rate data for each job that Fetch processes, before being discarded.

enova/sidekiq-rate-limiter,bobbrez/sidekiq-dynamic-throttle