• Calculates exponential backoff delay with optional jitter for retry attempts. Formula: min(maxBackoffMs, initialBackoffMs * 2^attempt) + jitter.

    Parameters

    • attempt: number

      The attempt number (0-indexed).

    • initialBackoffMs: number = 1000

      Initial backoff duration in milliseconds (default: 1000).

    • maxBackoffMs: number = 32000

      Maximum backoff duration in milliseconds (default: 32000).

    • jitterFactor: number = 0.1

      Jitter as fraction of backoff (default: 0.1 = 10%).

    Returns number

    Calculated backoff delay in milliseconds.

    export function calculateBackoff(
    attempt: number,
    initialBackoffMs: number = 1000,
    maxBackoffMs: number = 32000,
    jitterFactor: number = 0.1,
    ): number {
    const exponentialBackoff = Math.min(
    maxBackoffMs,
    initialBackoffMs * Math.pow(2, attempt),
    );
    const jitter = exponentialBackoff * jitterFactor * Math.random();
    return Math.floor(exponentialBackoff + jitter);
    }