UNPKG

@geersch/retry

Version:

Backoff strategies to use when retrying a function after a given delay.

20 lines (16 loc) 598 B
import type { BackoffStrategyConfig } from './backoff-strategy-config.js'; import type { BackoffStrategy } from './backoff.strategy.js'; import { randomBetween } from './utils.js'; export class FullJitterBackOffStrategy implements BackoffStrategy { private readonly baseDelay: number; constructor({ baseDelay = 100 }: BackoffStrategyConfig = {}) { this.baseDelay = baseDelay; } *getGenerator(maxRetries: number): Generator<number> { let attempt = 1; while (attempt <= maxRetries) { yield randomBetween(0, this.baseDelay * 2 ** attempt); attempt += 1; } } }