retry-lit
TypeScript icon, indicating that this package has built-in type declarations

1.4.2 • Public • Published

retry-lit

Helper method to retry a promise-returning or async function. It does exponential backoff and supports custom retry strategies for failed operations.

Requirements

Installation

$ npm i retry-lit
# or
$ yarn add retry-lit

Example

const { retry } = require('retry-lit');
const fetch = require('node-fetch');

(async () => {
	// 1️⃣ Wrap your async function with `retry`.
	await retry(
		async () => {
			const response = await fetch('https://example.com');
			// 2️⃣ Abort retrying if the resource doesn't exist.
			if (response.status === 404) {
				throw new retry.AbortError(response.statusText);
			}
			return response.blob();
		},
		// ℹ️ Retry 5 times.
		{ retries: 5 },
	);
})();

API

retry(input, options?)

input

Type: Function

The target URL of the request.

options?

Type: Object

The optional retry configuration.

{
  // The maximum amount of times to retry the operation. Default is 3.
  // Setting this to 1 means do it once, then retry it once.
  retries: 3,

  // The exponential factor to use. Default is 2.
  factor: 2,

  // The number of milliseconds before starting the first retry.
  // Default is 1000.
  minTimeout: 1000,

  // The maximum number of milliseconds between two retries.
  // Default is Infinity.
  maxTimeout: Infinity,

  // Callback invoked on each retry. Receives the error thrown by input as
  // the first argument with properties attemptNumber and retriesLeft which
  // indicate the current attempt number and the number of attempts left,
  // respectively.
  onFailedAttempt: (error) => {}
}

Note: The onFailedAttempt function can return a promise. For example to call a remote logging service. If the onFailedAttempt function throws, all retries will be aborted and the original promise will reject with the thrown error.

retry.AbortError(message)

retry.AbortError(error)

Abort retrying and reject the promise.

message

Type: string

Error message.

error

Type: Error

Custom error.

Development

(1) Install dependencies

$ npm i
# or
$ yarn

(2) Run initial validation

$ ./Taskfile.sh validate

(3) Start developing. See ./Taskfile.sh for more tasks to help you develop.


This project was set up by @jvdx/core

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.4.2
    9
    • latest

Version History

Package Sidebar

Install

npm i retry-lit

Weekly Downloads

10

Version

1.4.2

License

MIT

Unpacked Size

10.9 kB

Total Files

7

Last publish

Collaborators

  • joelvoss