@jsier/retrier
TypeScript icon, indicating that this package has built-in type declarations

1.2.4 • Public • Published

@jsier/retrier

Promise based retry logic

A simple, efficient and lightweight package without external dependencies which helps quickly implement JavaScript promise based retry logic. Retrier class is built with TypeScript (preserves full compatibility with pure JavaScript) and exposes intuitive and easy-to-use API.

Supports:

  • First attempt delay
  • Delay between attempts
  • Limiting number of attempts
  • Callback to stop retrying if some condition is met (e.g. specific error is encountered)
  • Callback to keep retrying if some condition is met (e.g. resolved value is unsatisfactory)

Getting Started

$ npm install @jsier/retrier --save

Usage

Retrier constructor as a first argument expects function which returns a promise. Second argument is optional and expects retry options object.

import { Retrier } from '@jsier/retrier';

const options = { limit: 5, delay: 2000 };
const retrier = new Retrier(options);
retrier
  .resolve(attempt => new Promise((resolve, reject) => reject('Rejected!')))
  .then(
    result => console.log(result),
    error => console.error(error) // After 5 attempts logs: "Rejected!"
  );

Retry Options

By default, the retrier will retry until provided promise resolves successfully or until retry limit is reached. To override the defaults please see retry options below:

Property Description Type Default
limit Number of attempts. number 1
delay Delay between attempts in milliseconds. number 0
firstAttemptDelay Delay first attempt. number 0
keepRetryingIf Treat resolved value as invalid and keep retrying - if provided function returns truthy value. Example: keepRetryingIf: (response, attempt) => response.status === 202; Function undefined
stopRetryingIf Stop retrying (reject) if specific error - (provided function returns truthy value). Example: stopRetryingIf: (error, attempt) => error.status === 500; Function undefined

Support

All suggestions and improvements are welcomed and appreciated.

License

The MIT License.

Dependencies (0)

    Dev Dependencies (4)

    Package Sidebar

    Install

    npm i @jsier/retrier

    Weekly Downloads

    1,833

    Version

    1.2.4

    License

    MIT

    Unpacked Size

    7.86 kB

    Total Files

    5

    Last publish

    Collaborators

    • seidme