async function captureWithRetry(client, options, maxRetries = 3) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const result = await client.capture(options);
if (result.success) return result;
// Don't retry client errors (except 429)
if (result.statusCode >= 400 && result.statusCode < 500 && result.statusCode !== 429) {
throw new Error(result.error);
}
// Wait before retrying: 1s, 2s, 4s
const delay = Math.pow(2, attempt) * 1000;
await new Promise(resolve => setTimeout(resolve, delay));
}
throw new Error('Max retries exceeded');
}