Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joelvoss/retry-lit
Helper method to retry a promise-returning or async function
https://github.com/joelvoss/retry-lit
javascript nodejs promise
Last synced: 3 months ago
JSON representation
Helper method to retry a promise-returning or async function
- Host: GitHub
- URL: https://github.com/joelvoss/retry-lit
- Owner: joelvoss
- License: mit
- Created: 2021-08-08T13:18:39.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-05T19:16:42.000Z (over 1 year ago)
- Last Synced: 2024-05-07T05:22:02.731Z (9 months ago)
- Topics: javascript, nodejs, promise
- Language: JavaScript
- Homepage:
- Size: 2.72 MB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# retry-lit
Helper method to retry a promise-returning or async function.
It does exponential backoff and supports custom retry strategies for
failed operations.## Installation
```bash
$ npm i retry-lit
# or
$ yarn add retry-lit
```## Example
```js
const { retry } = require('retry-lit');
const fetch = require('node-fetch');(async () => {
// 1️⃣ Wrap your async function with `retry`.
await retry(
async () => {
const response = await fetch('https://example.com');
// 2️⃣ Abort retrying if the resource doesn't exist.
if (response.status === 404) {
throw new retry.AbortError(response.statusText);
}
return response.blob();
},
// ℹ️ Retry 5 times.
{ retries: 5 },
);
})();
```## API
### `retry(input, options?)`
#### `input`
Type: `Function`
The target URL of the request.
#### `options?`
Type: `Object`
The optional retry configuration.
```js
{
// The maximum amount of times to retry the operation. Default is 3.
// Setting this to 1 means do it once, then retry it once.
retries: 3,// The exponential factor to use. Default is 2.
factor: 2,// The number of milliseconds before starting the first retry.
// Default is 1000.
minTimeout: 1000,// The maximum number of milliseconds between two retries.
// Default is Infinity.
maxTimeout: Infinity,// Callback invoked on each retry. Receives the error thrown by input as
// the first argument with properties attemptNumber and retriesLeft which
// indicate the current attempt number and the number of attempts left,
// respectively.
onFailedAttempt: (error) => {}
}
```> Note: The `onFailedAttempt` function can return a promise. For example to
> call a remote logging service.
> If the `onFailedAttempt` function throws, all retries will be aborted and the
> original promise will reject with the thrown error.### `retry.AbortError(message)`
### `retry.AbortError(error)`
Abort retrying and reject the promise.
#### `message`
Type: `string`
Error message.
#### `error`
Type: `Error`
Custom error.
## Development
(1) Install dependencies
```bash
$ npm i
# or
$ yarn
```(2) Run initial validation
```bash
$ ./Taskfile.sh validate
```(3) Start developing. See [`./Taskfile.sh`](./Taskfile.sh) for more tasks to
help you develop.---