Class: RetryAgent
Extends: undici.Dispatcher
A undici.Dispatcher
that allows to automatically retry a request.
Wraps a undici.RetryHandler
.
new RetryAgent(dispatcher, [options])
Arguments:
- dispatcher
undici.Dispatcher
(required) - the dispatcher to wrap - options
RetryHandlerOptions
(optional) - the options
Returns: ProxyAgent
Parameter: RetryHandlerOptions
- retry
(err: Error, context: RetryContext, callback: (err?: Error | null) => void) => void
(optional) - Function to be called after every retry. It should pass error if no more retries should be performed. - maxRetries
number
(optional) - Maximum number of retries. Default:5
- maxTimeout
number
(optional) - Maximum number of milliseconds to wait before retrying. Default:30000
(30 seconds) - minTimeout
number
(optional) - Minimum number of milliseconds to wait before retrying. Default:500
(half a second) - timeoutFactor
number
(optional) - Factor to multiply the timeout by for each retry attempt. Default:2
- retryAfter
boolean
(optional) - It enables automatic retry after theRetry-After
header is received. Default:true
- methods
string[]
(optional) - Array of HTTP methods to retry. Default:['GET', 'PUT', 'HEAD', 'OPTIONS', 'DELETE']
- statusCodes
number[]
(optional) - Array of HTTP status codes to retry. Default:[429, 500, 502, 503, 504]
- errorCodes
string[]
(optional) - Array of Error codes to retry. Default:['ECONNRESET', 'ECONNREFUSED', 'ENOTFOUND', 'ENETDOWN','ENETUNREACH', 'EHOSTDOWN', 'UND_ERR_SOCKET']
RetryContext
state
:RetryState
- Current retry state. It can be mutated.opts
:Dispatch.DispatchOptions & RetryOptions
- Options passed to the retry handler.
Example:
import { Agent, RetryAgent } from 'undici'
const agent = new RetryAgent(new Agent())
const res = await agent.request('http://example.com')
console.log(res.statusCode)
console.log(await res.body.text())