exponentialBackoff function
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;
}