smoke - retry stable code download (fix #143386) (#143592)

This commit is contained in:
Benjamin Pasero
2022-02-22 09:04:56 +01:00
committed by GitHub
parent 85e2121657
commit 5a17b1bb76
2 changed files with 21 additions and 4 deletions

View File

@@ -141,11 +141,19 @@ export interface ITask<T> {
(): T;
}
export async function retry<T>(task: ITask<Promise<T>>, delay: number, retries: number): Promise<T> {
export async function retry<T>(task: ITask<Promise<T>>, delay: number, retries: number, onBeforeRetry?: () => Promise<unknown>): Promise<T> {
let lastError: Error | undefined;
for (let i = 0; i < retries; i++) {
try {
if (i > 0 && typeof onBeforeRetry === 'function') {
try {
await onBeforeRetry();
} catch (error) {
console.warn(`onBeforeRetry failed with: ${error}`);
}
}
return await task();
} catch (error) {
lastError = error;