in client/src/main/scala/com.gu.contentapi.client/BackoffStrategy.scala [51:63]
def exponentialStrategy(delay: Duration, maxAttempts: Int): Exponential = exponential(delay, maxAttempts)
def doublingStrategy(delay: Duration, maxAttempts: Int): Multiple = multiple(delay, maxAttempts, factor = 2.0)
def multiplierStrategy(delay: Duration, maxAttempts: Int, multiplier: Double): Multiple = multiple(delay, maxAttempts, multiplier)
def constantStrategy(delay: Duration, maxAttempts: Int): Constant = constant(delay, maxAttempts)
private def exponential(
min: Duration = Duration(defaultExponentialMinimumInterval, TimeUnit.MILLISECONDS),
maxAttempts: Int = defaultMaxAttempts
): Exponential = {
val ln = Math.max(min.toMillis, defaultExponentialMinimumInterval)
val mx = if (maxAttempts > 0) maxAttempts else 1
Exponential(Duration(ln, TimeUnit.MILLISECONDS), 0, mx)
}