1.1.1 • Published 1 month ago

@teneff/with-retry v1.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 month ago

@teneff/with-retry

Retry async functions when error happens

NPM version Build Status Coverage Status GitHub issues GitHub stars

Options

Type: object

options.maxCalls

Type: number (default: 2)

Specifies the maximum amount of calls to the decorated function.

options.errors

Type: Error[] (default: [Error])

Specifies an array of errors for which the function should be retried. If the default option is used it will be retried for every error.

options.delay

Type: number | ({ call: number; errors: Error[] }) => number (default: 0)

Specifies amount of delay before each retry.

  • If a number is given after each Error the subsequent invocation will be delayed with a fixed amount.
  • If a function returning number is given it will invoke the function and delay the invocations by the result

Examples:

as Babel legacy decorator

on request timeout using got

import got from 'got'
import withRetry from '@teneff/with-retry'

@withRetry({
    maxCalls: 5,
    errors: [got.TimeoutError],
})
export default function getFlakyServiceData() {
    return await got("https://example.com");
}

as a function

using got

import got from "got";
import withRetry from "@teneff/with-retry";

function getFlakyServiceData() {
  return await got("https://example.com");
}

export default withRetry({
  maxCalls: 5,
  errors: [got.TimeoutError],
})(getFlakyServiceData);

as an experimental decorator

import got from "got";
import withRetry from '@teneff/with-retry/decorator'

class Example
  @withRetry({
    maxCalls: 5,
    errors: [got.TimeoutError],
  })
  getFlakyServiceData() {
    return await got("https://example.com");
  }
}

v1.1.0

Adds support for unknown errors

import withRetry, { UnknownError } from '@teneff/with-retry'

function resolvesPromiseWithNonError() {
  return Promise.reject('a string')
}

await withRetry({
  errors: UnknownError
})(resolvesPromiseWithNonError)()