calculateRetryWaitingPeriod method

int calculateRetryWaitingPeriod(
  1. int retryCount
)

Implementation

int calculateRetryWaitingPeriod(int retryCount) {
  // Exponential backoff with jitter
  final attemptsUsed = (maxRetryAttempts - retryCount);
  final baseMs = 500; // base delay in ms
  final cappedAttempts = min(attemptsUsed, 10); // prevents huge shifts
  final exponential =
      baseMs * (1 << cappedAttempts); // base * 2^cappedAttempts
  final jitter = _rand.nextInt(200); // 0..199 ms jitter
  var retryPauseDurationMs = exponential + jitter;

  //Prevents too long retry awaits
  if (retryPauseDurationMs > maxDelayMs) {
    retryPauseDurationMs = maxDelayMs;
  }

  return retryPauseDurationMs;
}