1.0.11 • Published 1 year ago

promise-fn-retry v1.0.11

Weekly downloads
712
License
MIT
Repository
github
Last release
1 year ago

Promise Retry

GitHub license npm version Build Status devDependencies Status Coverage Status Code Style PRs Welcome

Abstraction for exponential and custom retry strategies to failed promises.

Retrying made simple and easy. \o/

Installation

Using yarn:

yarn add promise-fn-retry

Using npm:

npm i --save promise-fn-retry

Usage

Simple Request

  import fetch from 'node-fetch';
  import retry from 'promise-fn-retry';

  const requestUser = () => {
    // Create a function that return a promise
    const promiseFn = () => fetch('https://api.github.com/users/14');

    // call retry passing promiseFn argument. Thats it!
    return retry(promiseFn)
      .then(res => res.json());
  };

  export default requestUser;

Using options param

  import fetch from 'node-fetch';
  import retry from 'promise-fn-retry';

  const requestUser = () => {
    // Create a function that return a promise
    const promiseFn = () => fetch('https://api.github.com/users/14');

    // You can use options to your retry rules strategy.
    const options = {
      times: 3,
      initialDelay: 100,
    };

    // call retry passing promiseFn argument. Thats it!
    return retry(promiseFn, options)
      .then(res => res.json());
  };

  export default requestUser;

API

  retry(promiseFn : Function, [options : Object]) => Promise

Options

These are the available config options for retrying. Only promiseFn is required. If an object isn't provided, the lib will use the default options.

{
  // The number of times the lib will retry execute the promiseFn
  // Default: 1
  times: 3,

  // The first wait time to delay
  // Default: 100
  initialDelayTime: 200,

  // (Optional) This callback is executed on each retry. It's useful to log your errors to a log service for example
  // Default: null
  onRetry: (error) => {
    console.log(error);
    sendToSentry(error);
    sendToKibana(error);
  },

 // (Optional) This callback is executed before each retry to determine if it's necessary retrying.
 // If the function returns true, the next retry will be executed, else the retrying will be canceled.
 // Default: null
 shouldRetry: (error) => {
   console.log(error);
   return (error.message === 'FAILED_AUTH');
 }
}

Delay strategy

Each retry doubles the current delay.

  • The first delay uses the initialDelayTime option, like 100ms.
  • The second uses 200ms (100 * 2).
  • The third uses 400ms ...

License

Licensed under the MIT License, Copyright © 2018-present Felippe Maurício.

1.0.11

1 year ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago