deno.land / x / cockatiel@v3.1.2 / src / FallbackPolicy.ts
12345678910111213141516171819202122232425262728293031323334353637import { neverAbortedSignal } from './common/abort';import { ExecuteWrapper } from './common/Executor';import { IDefaultPolicyContext, IPolicy } from './Policy';
export class FallbackPolicy<AltReturn> implements IPolicy<IDefaultPolicyContext, AltReturn> { declare readonly _altReturn: AltReturn;
/** * @inheritdoc */ public readonly onSuccess = this.executor.onSuccess;
/** * @inheritdoc */ public readonly onFailure = this.executor.onFailure;
constructor(private readonly executor: ExecuteWrapper, private readonly value: () => AltReturn) {}
/** * Executes the given function. * @param fn Function to execute. * @returns The function result or fallback value. */ public async execute<T>( fn: (context: IDefaultPolicyContext) => PromiseLike<T> | T, signal = neverAbortedSignal, ): Promise<T | AltReturn> { const result = await this.executor.invoke(fn, { signal }); if ('success' in result) { return result.success; }
return this.value(); }}
Version Info