INNER CODE UNIT · JavaScript

fetchIcon

ImranR98/apps.obtainium.imranr.dev · scripts/validate_icons.js:40

async function fetchIcon(url) {
  let lastError
  for (let attempt = 1; attempt <= ATTEMPTS; attempt++) {
    const controller = new AbortController()
    const timeout = setTimeout(() => controller.abort(), TIMEOUT_MS)
    try {
      const response = await fetch(url, {
        signal: controller.signal,
        headers: { 'User-Agent': USER_AGENT, 'Accept': 'image/*' }
      })
      if (!response.ok) {
        const inconclusive =
          response.status === 403 || response.status === 408 || response.status === 429 || response.status >= 500
        if (inconclusive && attempt < ATTEMPTS) {
          lastError = new Error(`HTTP ${response.status}`)
          await new Promise(resolve => setTimeout(resolve, 500 * attempt))
          continue
        }

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…