@knownasrazi/retry
v1.0.0
Published
Retry async functions with exponential backoff, full jitter and AbortSignal support.
Maintainers
Readme
retry
Retry async functions with exponential backoff and jitter.
Zero dependencies - ~2 KB gzipped - TypeScript - Node + Bun + browser
Install
bun add @knownasrazi/retry
npm install @knownasrazi/retryUsage
import { retry } from "@knownasrazi/retry";
await retry(() => fetch("https://api.example.com/users"), {
retries: 5,
baseDelay: 200,
maxDelay: 5000,
jitter: 0.25,
retryIf: e => (e as Error).message !== "fatal",
onRetry: (e, attempt, delay) => console.warn(`retry ${attempt} in ${delay}ms`),
});API
retry(fn, options?): Promise<T>
| Option | Type | Default | Description |
| --- | --- | --- | --- |
| retries | number | 3 | Max attempts (incl. first) |
| baseDelay | number | 200 | First backoff ms |
| maxDelay | number | 5000 | Cap ms |
| jitter | number | 0.25 | 0-1 random factor |
| retryIf | (e) => boolean | retry all | Predicate |
| onRetry | (e, attempt, delay) => void | - | Hook |
Also retrySync(fn, opts) for synchronous callers.
Development
git clone https://github.com/knownasrazi/retry.git
cd retry
bun install
bun test
bun run build
bun run lintLicense
retry - try again, smarter.
