@insertish/exponential-backoff v3.1.0-patch.2
exponential-backoff
A utility that allows retrying a function with an exponential delay between attempts.
Installation
npm i exponential-backoffUsage
The backOff<T> function takes a promise-returning function to retry, and an optional IBackOffOptions object. It returns a Promise<T>.
function backOff<T>(
  request: () => Promise<T>,
  options?: IBackOffOptions
): Promise<T>;Here is an example retrying a function that calls a hypothetical weather endpoint:
import { backOff } from "exponential-backoff";
function getWeather() {
  return fetch("weather-endpoint");
}
async function main() {
  try {
    const response = await backOff(() => getWeather());
    // process response
  } catch (e) {
    // handle error
  }
}
main();Migrating across major versions? Here are our breaking changes.
IBackOffOptions
- delayFirstAttempt?: boolean- Decides whether the - startingDelayshould be applied before the first call. If- false, the first call will occur without a delay.- Default value is - false.
- jitter?: JitterType | string- Decides whether a jitter should be applied to the delay. Possible values are - fulland- none.- Default value is - none.
- maxDelay?: number- The maximum delay, in milliseconds, between two consecutive attempts. - Default value is - Infinity.
- numOfAttempts?: number- The maximum number of times to attempt the function. - Default value is - 10.- Minimum value is - 1.
- retry?: (e: any, attemptNumber: number) => boolean | Promise<boolean>- The - retryfunction can be used to run logic after every failed attempt (e.g. logging a message, assessing the last error, etc.). It is called with the last error and the upcoming attempt number. Returning- truewill retry the function as long as the- numOfAttemptshas not been exceeded. Returning- falsewill end the execution.- Default value is a function that always returns - true.
- startingDelay?: number- The delay, in milliseconds, before executing the function for the first time. - Default value is - 100ms.
- timeMultiple?: number- The - startingDelayis multiplied by the- timeMultipleto increase the delay between reattempts.- Default value is - 2.