Helper method to retry a promise-returning or async function. It does exponential backoff and supports custom retry strategies for failed operations.
$ npm i retry-lit
# or
$ yarn add retry-lit
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 },
);
})();
Type: Function
The target URL of the request.
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 theonFailedAttempt
function throws, all retries will be aborted and the original promise will reject with the thrown error.
Abort retrying and reject the promise.
Type: string
Error message.
Type: Error
Custom error.
(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.