chore: retry util on tests (#12126)

This commit is contained in:
Carlos R. L. Rodrigues
2025-04-09 13:07:05 -03:00
committed by GitHub
parent cb26c224ea
commit f615ebb7e8
3 changed files with 193 additions and 119 deletions

View File

@@ -0,0 +1,32 @@
import { setTimeout } from "timers/promises"
export async function fetchAndRetry(
func: () => Promise<any>,
validation?: (data: any) => boolean,
{
retries = 3,
waitSeconds = 1,
}: {
retries?: number
waitSeconds?: number
} = {}
) {
while (retries >= 0) {
try {
const res = await func()
if (validation && !validation(res)) {
throw new Error("Validation failed. Retry...")
}
return res
} catch (err) {
if (retries > 0) {
retries--
await setTimeout(waitSeconds * 1000)
continue
}
throw err
}
}
}