Options for the low-level withRetry wrapper.

interface RetryOptions {
    baseDelayMs?: number;
    isRetryable?: RetryableClassifier;
    jitter?: boolean;
    maxDelayMs?: number;
    maxRetries?: number;
    onRetry?: RetryLogger;
    signal?: AbortSignal;
    sleep?: ((ms: number, signal?: AbortSignal) => Promise<void>);
}

Properties

baseDelayMs?: number

Base delay in ms for the first backoff step. Default: 1000.

isRetryable?: RetryableClassifier

Error classifier. Default: isRetryableRpcError.

jitter?: boolean

Apply full jitter to each delay. Default: true.

maxDelayMs?: number

Upper bound for any single backoff delay. Default: 30000.

maxRetries?: number

Max retries after the initial attempt. Default: 3.

onRetry?: RetryLogger

Retry logger. Default: no-op.

signal?: AbortSignal

Cancels an in-flight retry loop.

The signal is checked before each attempt and interrupts the backoff delay itself, so an abort takes effect immediately rather than after the current sleep (which can be up to maxDelayMs) elapses. When it fires, withRetry rejects with the signal's reason.

sleep?: ((ms: number, signal?: AbortSignal) => Promise<void>)

Clock seam used to wait between attempts. Injectable for tests. Default: a setTimeout-based sleep. Receives RetryOptions.signal when one is set; implementations may ignore it, since withRetry also races the sleep against the signal.