1.0.0 • Published 4 years ago

authbox.async-retry v1.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

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:

OptionDefaultDescription
retries10The number of times to retry the function
factor2The exponential factor to use
minTimeout1000The number of milliseconds before starting the first retry
maxTimeoutInfinityThe maximum number of milliseconds between two retries
randomizefalseRandomizes the timeouts by multiplying with a factor between 1 to 2
onError() => trueA 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.