Socket
Socket
Sign inDemoInstall

promise-fn-retry

Package Overview
Dependencies
0
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    promise-fn-retry

A simple retry to be used in integrations with NodeJS


Version published
Weekly downloads
2.5K
decreased by-23.48%
Maintainers
1
Install size
9.63 kB
Created
Weekly downloads
 

Readme

Source

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.

Keywords

FAQs

Last updated on 03 May 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc