feat: add dry-run options and retry helper

This commit is contained in:
Peter Steinberger
2025-11-25 03:57:50 +01:00
parent af577f07da
commit fdfb1df0de
4 changed files with 32 additions and 1 deletions

18
src/infra/retry.ts Normal file
View File

@@ -0,0 +1,18 @@
export async function retryAsync<T>(
fn: () => Promise<T>,
attempts = 3,
initialDelayMs = 300,
): Promise<T> {
let lastErr: unknown;
for (let i = 0; i < attempts; i += 1) {
try {
return await fn();
} catch (err) {
lastErr = err;
if (i === attempts - 1) break;
const delay = initialDelayMs * 2 ** i;
await new Promise((r) => setTimeout(r, delay));
}
}
throw lastErr;
}