25 lines
510 B
TypeScript
25 lines
510 B
TypeScript
const MAX_RETRY = 3;
|
|
|
|
/**
|
|
* @param func - Function to do.
|
|
* @param cond - Retry condition callback function. Stop when the function return false,
|
|
*/
|
|
export async function retry<T extends () => any>(
|
|
func: T,
|
|
cond = (error: any) => !!error,
|
|
): Promise<ReturnType<T>> {
|
|
let retries = 0;
|
|
|
|
while (retries++ < MAX_RETRY - 1) {
|
|
try {
|
|
return await func();
|
|
} catch (error) {
|
|
if (cond(error)) {
|
|
retries++;
|
|
continue;
|
|
}
|
|
throw error;
|
|
}
|
|
}
|
|
return func();
|
|
}
|