Files
megahal.js/tests/test_utils.ts
2024-08-02 01:04:38 +03:00

33 lines
677 B
TypeScript

export function retry(fn: () => unknown, retries = 3): unknown {
let error: unknown
for (let i = 0; i < retries; ++i) {
try {
console.log('retrying', i)
return fn()
} catch (err) {
error = err
}
}
throw error
}
export function retryWithCondition(
fn: () => unknown,
condition: (_result: unknown) => boolean,
retries = 3,
): unknown {
let error: unknown
for (let i = 0; i < retries; ++i) {
try {
const res = fn()
if (condition(res)) {
return res
}
error = new Error(`Condition not met: ${res}`)
} catch (err) {
error = err
}
}
throw error || new Error('Condition not met')
}