import pRetry, { AbortError } from 'p-retry'; import pTimeout from 'p-timeout'; export async function withQwenTimeout( fn: () => Promise, { totalTimeout = 180_000, retries = 2 } = {} ): Promise { return pRetry( () => pTimeout(fn(), { milliseconds: totalTimeout }), { retries, onFailedAttempt: (error) => { console.error(`qwen3 attempt #${error.attemptNumber} failed: ${error.message}`); if (error.retriesLeft === 0) { console.error('qwen3 max retries reached, giving up'); } } } ); }