promise.retry
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

promise.retry

add (timeout and fail) retry for async functions

Build Status Coverage Status npm version npm downloads npm license

Install

$ npm i -S promise.retry

Note

this package require async/await environment.

API

const pretry = require('promise.retry')
const TimeoutError = pretry.TimeoutError
const RetryError = pretry.RetryError

pretry

const fnWithRetry = pretry(fn, options);
  • fn the original async function
  • options
    • times : int try how many times
    • timeout : int the timeout for each attempt, in ms
    • onerror : function(err, index) add extra action on an attempt error

TimeoutError

reexport from promise.timeout, see https://github.com/magicdawn/promise.timeout#api

RetryError

if all attempts failed, p = fnWithRetry(), p will be reject with a RetryError instance.

props

  • times : int same as pretry options
  • timeout : int same as pretry options
  • message : string the error message
  • errors : [err1, err2, ...] the errors

AbortSignal

if options.timeout Provided, ptimeout will provide a extra runtime argument signal?: AbortSignal use like below, see more at https://github.com/magicdawn/promise.timeout#singal

async fn(signal?: AbortSignal) {
	signal?.addEventListener('abort', () => {
		// custom clean up
	})
}

const fn2 = pretry(fn, { timeout: 1000 })
await fn2() // <- no `signal` arg here, the `signal` in fn is provided by ptimeout at runtime, only when options.timeout specified

See Also

Changelog

CHANGELOG.md

License

the MIT License http://magicdawn.mit-license.org

Dependents (3)

Package Sidebar

Install

npm i promise.retry

Weekly Downloads

22

Version

1.2.0

License

MIT

Unpacked Size

7.44 kB

Total Files

4

Last publish

Collaborators

  • magicdawn