11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/has_helpers/service_trust/client/retry.rb', line 11
def with_backoff(retries:, retry_on_status:)
attempt = 0
loop do
attempt += 1
begin
response = yield
return response if response.success?
raise ClientHTTPError.new(response.status, response.body) unless retry_on_status.include?(response.status)
raise ClientHTTPError.new(response.status, response.body) if attempt > retries
rescue ClientTimeoutError
raise if attempt > retries
end
sleep_for(attempt)
end
end
|