Sources/OSS/Retry/EqualJitterBackoff.swift (10 lines of code) (raw):

import Foundation public struct EqualJitterBackoff: Backoff { let baseDelay: TimeInterval let maxBackoff: TimeInterval public func backoffDelay(attempt: Int, error _: Error) -> TimeInterval { let ceil = min(pow(Double(2), Double(attempt) * baseDelay), maxBackoff) let delay = Double(ceil / 2) + Double.random(in: 0 ..< 1) * Double(ceil / 2 + 1) return delay } }