File size: 965 Bytes
568021d
 
 
 
 
 
 
 
38df0bb
 
 
 
 
 
 
 
 
 
 
 
568021d
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import pRetry, { AbortError } from 'p-retry';
import pTimeout from 'p-timeout';

export async function withQwenTimeout<T>(
  fn: () => Promise<T>,
  { totalTimeout = 180_000, retries = 2 } = {}
): Promise<T> {
  return pRetry(
    async () => {
      try {
        return await pTimeout(fn(), { milliseconds: totalTimeout });
      } catch (error) {
        // Convert non-Error objects to proper Error objects for p-retry
        if (error && typeof error === 'object' && !(error instanceof Error)) {
          const errorMessage = error.message || error.toString() || 'Network connection error';
          throw new Error(errorMessage);
        }
        throw error;
      }
    },
    {
      retries,
      onFailedAttempt: (error) => {
        console.error(`qwen3 attempt #${error.attemptNumber} failed: ${error.message}`);
        if (error.retriesLeft === 0) {
          console.error('qwen3 max retries reached, giving up');
        }
      }
    }
  );
}