exponentialBackoff function

Duration exponentialBackoff(
  1. int attempt, {
  2. Duration base = exponentialBackoffDefaultBase,
  3. Duration? maxDelay,
})

Returns delay for attempt attempt (0-based): base * 2^attempt, capped at maxDelay.

Implementation

Duration exponentialBackoff(
  int attempt, {
  Duration base = exponentialBackoffDefaultBase,
  Duration? maxDelay,
}) {
  final int ms = (base.inMilliseconds * (1 << attempt.clamp(0, _maxBackoffAttemptShift))).clamp(
    0,
    _maxDurationMilliseconds,
  );
  final Duration d = Duration(milliseconds: ms);
  if (maxDelay != null && d > maxDelay) return maxDelay;
  return d;
}