123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- import Dispatcher from "./dispatcher";
- export default RetryHandler;
- declare class RetryHandler implements Dispatcher.DispatchHandlers {
- constructor(
- options: Dispatcher.DispatchOptions & {
- retryOptions?: RetryHandler.RetryOptions;
- },
- retryHandlers: RetryHandler.RetryHandlers
- );
- }
- declare namespace RetryHandler {
- export type RetryState = { counter: number; };
- export type RetryContext = {
- state: RetryState;
- opts: Dispatcher.DispatchOptions & {
- retryOptions?: RetryHandler.RetryOptions;
- };
- }
- export type OnRetryCallback = (result?: Error | null) => void;
- export type RetryCallback = (
- err: Error,
- context: {
- state: RetryState;
- opts: Dispatcher.DispatchOptions & {
- retryOptions?: RetryHandler.RetryOptions;
- };
- },
- callback: OnRetryCallback
- ) => number | null;
- export interface RetryOptions {
- /**
- * Callback to be invoked on every retry iteration.
- * It receives the error, current state of the retry object and the options object
- * passed when instantiating the retry handler.
- *
- * @type {RetryCallback}
- * @memberof RetryOptions
- */
- retry?: RetryCallback;
- /**
- * Maximum number of retries to allow.
- *
- * @type {number}
- * @memberof RetryOptions
- * @default 5
- */
- maxRetries?: number;
- /**
- * Max number of milliseconds allow between retries
- *
- * @type {number}
- * @memberof RetryOptions
- * @default 30000
- */
- maxTimeout?: number;
- /**
- * Initial number of milliseconds to wait before retrying for the first time.
- *
- * @type {number}
- * @memberof RetryOptions
- * @default 500
- */
- minTimeout?: number;
- /**
- * Factior to multiply the timeout factor between retries.
- *
- * @type {number}
- * @memberof RetryOptions
- * @default 2
- */
- timeoutFactor?: number;
- /**
- * It enables to automatically infer timeout between retries based on the `Retry-After` header.
- *
- * @type {boolean}
- * @memberof RetryOptions
- * @default true
- */
- retryAfter?: boolean;
- /**
- * HTTP methods to retry.
- *
- * @type {Dispatcher.HttpMethod[]}
- * @memberof RetryOptions
- * @default ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],
- */
- methods?: Dispatcher.HttpMethod[];
- /**
- * Error codes to be retried. e.g. `ECONNRESET`, `ENOTFOUND`, `ETIMEDOUT`, `ECONNREFUSED`, etc.
- *
- * @type {string[]}
- * @default ['ECONNRESET','ECONNREFUSED','ENOTFOUND','ENETDOWN','ENETUNREACH','EHOSTDOWN','EHOSTUNREACH','EPIPE']
- */
- errorCodes?: string[];
- /**
- * HTTP status codes to be retried.
- *
- * @type {number[]}
- * @memberof RetryOptions
- * @default [500, 502, 503, 504, 429],
- */
- statusCodes?: number[];
- }
- export interface RetryHandlers {
- dispatch: Dispatcher["dispatch"];
- handler: Dispatcher.DispatchHandlers;
- }
- }
|