aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/exponential-backoff/src/delay/delay.factory.ts
blob: 95e89fbf840260ee8444f0ff3595c287da374d14 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import { IBackOffOptions } from "../options";
import { SkipFirstDelay } from "./skip-first/skip-first.delay";
import { AlwaysDelay } from "./always/always.delay";
import { IDelay } from "./delay.interface";

export function DelayFactory(options: IBackOffOptions, attempt: number): IDelay {
    const delay = initDelayClass(options);
    delay.setAttemptNumber(attempt);
    return delay;
}

function initDelayClass(options: IBackOffOptions) {
    if (!options.delayFirstAttempt) {
        return new SkipFirstDelay(options);
    }

    return new AlwaysDelay(options);
}