authbox.async-retry

1.0.0 • Public • Published

AuthBox.AsyncRetry

Async retry library for NodeJS built on top of retry

Basic Usage

The example below will call the getData function up to 3 times (The initial call and up to another 2 retries). It uses an exponential backoff between attempts

const asyncRetry = require('authbox.async-retry');

const getData = async () => {
    // Do your work here
};

return asyncRetry(getData, {
    retries: 2,
});

Available options

The second parameter of asyncRetry is the options object. This parameter is optional, but if specified supports the following options:

Option Default Description
retries 10 The number of times to retry the function
factor 2 The exponential factor to use
minTimeout 1000 The number of milliseconds before starting the first retry
maxTimeout Infinity The maximum number of milliseconds between two retries
randomize false Randomizes the timeouts by multiplying with a factor between 1 to 2
onError () => true A function (see below) called then function errors

All options but onError are from retry

Error handling

The options of asyncRetry takes an onError function, which takes the number of the current attempt and the error that occured. This function is expected to return a boolean result to signify whether to continue retrying.

The following example shows how to abort processing if a 401 error has occured more than once:

asyncRetry(callApi, {
    onError: (attempt, err) => {
        if(err.statusCode === 401 && attempt === 2) {
            return false; // give up trying, the error is unrecoverable
        }
        return true; // keep retrying until success or retries limit reached
    },
});

It is also possible to abort retrying within the function itself by setting bail = true; on the error being thrown.

Readme

Keywords

Package Sidebar

Install

npm i authbox.async-retry

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

13.7 kB

Total Files

17

Last publish

Collaborators

  • rhys_hampton_io