Sources/OSS/Retry/FullJitterBackoff.swift (9 lines of code) (raw):
import Foundation
public struct FullJitterBackoff: Backoff {
let baseDelay: TimeInterval
let maxBackoff: TimeInterval
public func backoffDelay(attempt: Int, error _: Error) -> TimeInterval {
let delay = Double.random(in: 0 ..< 1) * min(pow(Double(2), Double(attempt) * baseDelay), maxBackoff)
return delay
}
}