retry

async

Retries an async function until it succeeds or max attempts are reached. Uses exponential backoff between retries.

Signature

retry<T>(fn: () => Promise<T>, options?: { retries?: number; delay?: number; backoff?: number; onRetry?: (error: Error, attempt: number) => void }): Promise<T>

Parameters

NameTypeDescription
fn() => Promise<T>The async function to retry
options?{ retries?: number; delay?: number; backoff?: number; onRetry?: Function }Retry options
options.retries?numberMaximum number of retry attemptsDefault: 3
options.delay?numberDelay between retries in millisecondsDefault: 1000
options.backoff?numberBackoff multiplierDefault: 2

Returns

Promise<T> - Returns the result of the function

Examples

Retry API call

import { retry } from 'dashlite'

const result = await retry(
  async () => await fetchData(),
  { retries: 3, delay: 1000 }
)

With exponential backoff

import { retry } from 'dashlite'

await retry(
  async () => await apiCall(),
  { retries: 5, delay: 100, backoff: 2 }
)
// Waits: 100ms, 200ms, 400ms, 800ms, 1600ms

Available since version 1.2.0