Skip to content
Buy me a coffee

ResilientFetchOptions

Defined in: src/fetch.ts:62

Options shared by createResilientFetch and the axios integration.

optional attemptTimeout?: Duration

Defined in: src/fetch.ts:41

Budget per attempt. Default 10 s.

HttpResilienceOptions.attemptTimeout


optional circuitBreaker?: false | Omit<CircuitBreakerOptions<Response>, "shouldHandle">

Defined in: src/fetch.ts:47

Circuit breaker options merged over the defaults (50% failures over the last 20 calls, 10 s break). false disables it.

HttpResilienceOptions.circuitBreaker


optional concurrency?: number | ConcurrencyLimiterOptions

Defined in: src/fetch.ts:49

Max attempts in flight per key (bulkhead), e.g. 20 or { permitLimit: 20, queueLimit: 100 }. Default: no limit.

HttpResilienceOptions.concurrency


optional fetch?: {(input, init?): Promise<Response>; (input, init?): Promise<Response>; }

Defined in: src/fetch.ts:64

The fetch to wrap. Default globalThis.fetch.

(input, init?): Promise<Response>

MDN Reference

URL | RequestInfo

RequestInit

Promise<Response>

(input, init?): Promise<Response>

MDN Reference

string | URL | Request

RequestInit

Promise<Response>


optional maxPipelines?: number

Defined in: src/fetch.ts:56

Max per-key pipelines kept; the least recently used is dropped beyond it. Default 100.

HttpResilienceOptions.maxPipelines


optional name?: string

Defined in: src/fetch.ts:37

Labels telemetry. Per-host pipelines are named <name>/<key>.

HttpResilienceOptions.name


optional onBeforeAttempt?: (request, context) => MaybePromise<void | Request>

Defined in: src/fetch.ts:68

Called before every attempt with a fresh Request; return a replacement, e.g. with a refreshed auth token.

Request

ResilienceContext

MaybePromise<void | Request>


optional pipeline?: ResiliencePipeline<Response, any>

Defined in: src/fetch.ts:66

Use your own pipeline instead of the built-in one (per-request retries, timeout, retryOn and per-host keys are then ignored).


optional pipelineKey?: (url) => string

Defined in: src/fetch.ts:54

Which requests share a circuit breaker and limiter. Default url => url.origin: one per host, so a dead host doesn’t open the breaker for the others. () => 'all' shares one.

URL

string

HttpResilienceOptions.pipelineKey


optional retry?: false | Omit<RetryOptions<Response>, "shouldHandle">

Defined in: src/fetch.ts:43

Retry options merged over the defaults (3 retries, exponential backoff from 200 ms, full jitter, Retry-After honoured). false disables retries.

HttpResilienceOptions.retry


optional retryOn?: RetryOn<Response>

Defined in: src/fetch.ts:45

What to retry. Default: network errors, timeouts and 408/429/500/502/503/504.

HttpResilienceOptions.retryOn


optional retryUnsafeMethods?: boolean

Defined in: src/fetch.ts:58

Retry POST / PATCH without an Idempotency-Key header too. Default false: they could run twice.

HttpResilienceOptions.retryUnsafeMethods


optional timeProvider?: TimeProvider

Defined in: src/fetch.ts:59

HttpResilienceOptions.timeProvider


optional totalTimeout?: Duration

Defined in: src/fetch.ts:39

Budget for the whole call, retries included. Default 30 s.

HttpResilienceOptions.totalTimeout