{"_id":"@apiratorjs/with-backoff","_rev":"6-1907393c71c7b19d038f46e987e5aadd","name":"@apiratorjs/with-backoff","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"@apiratorjs/with-backoff","version":"1.0.0","keywords":["backoff","retry","exponential","linear","jitter","strategy","decorator","network backoff","internal server error backoff","connection error message backoff"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/with-backoff@1.0.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/with-backoff#readme","bugs":{"url":"https://github.com/apiratorjs/with-backoff/issues"},"dist":{"shasum":"ccfe01aacd9c547fe48bd8fb77d529a7fc76431d","tarball":"https://registry.npmjs.org/@apiratorjs/with-backoff/-/with-backoff-1.0.0.tgz","fileCount":43,"integrity":"sha512-KfsjIbVsIJ55hmwImqrHEmTzQsoT+Z8ZtTeDHW2Z/OZxfMW12yeAk1MUzzlDbVD+C/v9CJ8Du64iLcm+56H3ig==","signatures":[{"sig":"MEUCIQD/R72WWLF+qK10xodhMX100htCmp4teGFsV1ltctl/jAIgC8wN8PNluG9gXvjqDlvEbesFWR5fHoC9N8S50irUlys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39250},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"61d3d149d081fd900d1d4a5e0b82035dc6773c76","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","actor":{"name":"apiratorjs","type":"user","email":"apirator.framework@gmail.com"},"email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/with-backoff.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight zero-dependency library for retrying operations with backoff for JavaScript and TypeScript.","directories":{},"_nodeVersion":"22.17.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/with-backoff_1.0.0_1751628127113_0.9902559173424628","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@apiratorjs/with-backoff","version":"1.0.1","keywords":["backoff","retry","exponential","linear","jitter","strategy","decorator","network backoff","internal server error backoff","connection error message backoff"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/with-backoff@1.0.1","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/with-backoff#readme","bugs":{"url":"https://github.com/apiratorjs/with-backoff/issues"},"dist":{"shasum":"81d6ba32ffad19bd1786132cb58a7fad7037c715","tarball":"https://registry.npmjs.org/@apiratorjs/with-backoff/-/with-backoff-1.0.1.tgz","fileCount":43,"integrity":"sha512-jcuf11I551zNR5E1+rujuHauZ8Y387+1Iqm2/e1hlm4YUFjAwJm78XkqfqLe/t7pqP1G/Eups4RZI8tnPeyLGQ==","signatures":[{"sig":"MEYCIQC8Rq2tDIQnrwzCQD0Nf/3WhGWIHqbUroWik6n5CuCOzQIhALy/eMC11fPOz8q31Nxe2o5IAjh5llp0i9U5ReC6j/85","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38637},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"7bd401ca65c5e9f240379f0f20325bcba5305788","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","actor":{"name":"apiratorjs","type":"user","email":"apirator.framework@gmail.com"},"email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/with-backoff.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight zero-dependency library for retrying operations with backoff for JavaScript and TypeScript.","directories":{},"_nodeVersion":"22.17.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/with-backoff_1.0.1_1751632043859_0.46112402661620755","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@apiratorjs/with-backoff","version":"1.0.3","keywords":["backoff","retry","exponential","linear","jitter","strategy","decorator","network backoff","internal server error backoff","connection error message backoff"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/with-backoff@1.0.3","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/with-backoff#readme","bugs":{"url":"https://github.com/apiratorjs/with-backoff/issues"},"dist":{"shasum":"4344502b34e5826e601e3199289a710ca0e0df06","tarball":"https://registry.npmjs.org/@apiratorjs/with-backoff/-/with-backoff-1.0.3.tgz","fileCount":43,"integrity":"sha512-+CDrKO1gD5Gp7AK7SM4y51RdPD2QgQwtUXnGxthhz86BXeL4RNUooyipKoGPBzpHY1Cczy+hhSYy787zPmtNvg==","signatures":[{"sig":"MEUCIQC0nlkX1UnYMb2MUHrxo90AuQvMguL2dEpRG8ZuXNbhEwIgEiGDbeOeXrM1LZyvJbFqoWWmVEZFayJd6KFoZOYmlv8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38542},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"c62e6eed1874ce0f9f7b524c74ecb202f275b398","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","actor":{"name":"apiratorjs","type":"user","email":"apirator.framework@gmail.com"},"email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/with-backoff.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight zero-dependency library for retrying operations with backoff for JavaScript and TypeScript.","directories":{},"_nodeVersion":"22.17.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/with-backoff_1.0.3_1751822425267_0.7610769995657454","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@apiratorjs/with-backoff","version":"1.0.4","keywords":["backoff","retry","exponential","linear","jitter","strategy","decorator","network backoff","internal server error backoff","connection error message backoff"],"author":{"url":"http://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/with-backoff@1.0.4","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/with-backoff#readme","bugs":{"url":"https://github.com/apiratorjs/with-backoff/issues"},"dist":{"shasum":"b2038c2db960989ae3aafa367868f288c13528cc","tarball":"https://registry.npmjs.org/@apiratorjs/with-backoff/-/with-backoff-1.0.4.tgz","fileCount":43,"integrity":"sha512-Mtvo4g2gEROPlUeRvRQqtDzBYTreFw6RfoLVy3bdArvaB6Nc1E9yDMk6IvUi3wgRF0oIUum45flsIUCp9vR2Fw==","signatures":[{"sig":"MEUCIFTKUNpPn1YUYzHWdgvnFQ9Wumz3eANOXNTE8Os7Ujy5AiEA+qM3tg+AMh9NQiJv+Y5iUseZd2RXivIzCLi+Q1rkZ8Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36871},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"b00499a1aae6fad996140183ed12a2631b4a2350","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/with-backoff.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight zero-dependency library for retrying operations with backoff for JavaScript and TypeScript.","directories":{},"_nodeVersion":"22.17.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/with-backoff_1.0.4_1759070452208_0.4547832774294873","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@apiratorjs/with-backoff","version":"1.0.5","keywords":["backoff","retry","exponential","linear","jitter","strategy","decorator","network backoff","internal server error backoff","connection error message backoff"],"author":{"url":"http://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/with-backoff@1.0.5","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/with-backoff#readme","bugs":{"url":"https://github.com/apiratorjs/with-backoff/issues"},"dist":{"shasum":"ec93c7858b8c2a4378aa67ffc1dea94c81dada4f","tarball":"https://registry.npmjs.org/@apiratorjs/with-backoff/-/with-backoff-1.0.5.tgz","fileCount":43,"integrity":"sha512-D8lk6wxmduRvtPvP4kRYNq21CLo+xx8+cgVO4pMCaBqopeDi58EJyecmPmpctCA1IwogqUAS494bIOhnTUny9A==","signatures":[{"sig":"MEYCIQCz/YQPpxfdHYN07svHALGnliE9jwr3wcXDmjOINH3RogIhAKKhT15pVxNM+L2O9Z+LK8PCaA5GlTv/KigDIfLb+frR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36975},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"2db464324a1bc884231af3c088db4888527c8afc","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/with-backoff.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight zero-dependency library for retrying operations with backoff for JavaScript and TypeScript.","directories":{},"_nodeVersion":"22.17.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/with-backoff_1.0.5_1759076458354_0.716153475723883","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@apiratorjs/with-backoff","version":"1.0.6","description":"A lightweight zero-dependency library for retrying operations with backoff for JavaScript and TypeScript.","author":{"name":"Alexey Zaitsev","url":"http://alexeyzaitsev.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/apiratorjs/with-backoff.git"},"main":"dist/src/index.js","types":"dist/src/index.d.ts","publishConfig":{"access":"public"},"keywords":["backoff","retry","exponential","linear","jitter","strategy","decorator","network backoff","internal server error backoff","connection error message backoff"],"type":"commonjs","scripts":{"build":"rm -rf dist && tsc","watch":"tsc --watch","test":"npm run build && node --test dist/test","prepublishOnly":"npm test"},"engines":{"node":">=16.4.0"},"devDependencies":{"@types/node":"^22.13.1","tsx":"^4.19.2","typescript":"^5.7.3"},"dependencies":{},"_id":"@apiratorjs/with-backoff@1.0.6","gitHead":"6311d7c03f2406cddf41ab831031b9dfd69c3598","bugs":{"url":"https://github.com/apiratorjs/with-backoff/issues"},"homepage":"https://github.com/apiratorjs/with-backoff#readme","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-Cege4t1LX/cfvluLf6iSqZ6L9ouL1j9keovTChB9CJGGsXh3aSuq8gz87lYrKXQO1ReM8Q8T93pzjnOZykXfrw==","shasum":"24c7fedab53ce861e6b54573ab3bc5309c79fcc7","tarball":"https://registry.npmjs.org/@apiratorjs/with-backoff/-/with-backoff-1.0.6.tgz","fileCount":43,"unpackedSize":37085,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCVq/mjQt/mv29UzV+/8XJ4RLweiNB0gksGY9Kwi//vwwIhAMJjz83P8xJSlwNY+ui/74/b7Tnpw2i60DEaeWOsHJb+"}]},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"directories":{},"maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/with-backoff_1.0.6_1759077469856_0.3654470588531704"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-04T11:22:07.004Z","modified":"2025-09-28T16:37:50.260Z","1.0.0":"2025-07-04T11:22:07.305Z","1.0.1":"2025-07-04T12:27:24.035Z","1.0.3":"2025-07-06T17:20:25.435Z","1.0.4":"2025-09-28T14:40:52.447Z","1.0.5":"2025-09-28T16:20:58.546Z","1.0.6":"2025-09-28T16:37:50.060Z"},"bugs":{"url":"https://github.com/apiratorjs/with-backoff/issues"},"author":{"name":"Alexey Zaitsev","url":"http://alexeyzaitsev.com"},"license":"MIT","homepage":"https://github.com/apiratorjs/with-backoff#readme","keywords":["backoff","retry","exponential","linear","jitter","strategy","decorator","network backoff","internal server error backoff","connection error message backoff"],"repository":{"type":"git","url":"git+https://github.com/apiratorjs/with-backoff.git"},"description":"A lightweight zero-dependency library for retrying operations with backoff for JavaScript and TypeScript.","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"readme":"# @apiratorjs/with-backoff\n\n[![NPM version](https://img.shields.io/npm/v/@apiratorjs/with-backoff.svg)](https://www.npmjs.com/package/@apiratorjs/with-backoff)\n[![License: MIT](https://img.shields.io/npm/l/@apiratorjs/with-backoff.svg)](https://github.com/apiratorjs/with-backoff/blob/main/LICENSE)\n\nA lightweight zero-dependency library for retrying operations with backoff for JavaScript and TypeScript. Features exponential and linear backoff strategies, jitter support, and specialized retry handlers for common error types.\n\n> **Note:** Requires Node.js version **>=16.4.0**\n \n---\n\n## Features\n\n- **Multiple Backoff Strategies:**\n  - **Exponential Backoff:** Delay increases exponentially between retries (default)\n  - **Linear Backoff:** Constant delay between retries\n  \n- **Specialized Error Handlers:**\n  - Network errors (`withNetworkBackoff`)\n  - Internal server errors (`withInternalServerErrorBackoff`)\n  - Connection error messages (`withConnectionErrorMessageBackoff`)\n\n- **Flexible Configuration:**\n  - Customizable retry attempts and delays\n  - Jitter support to prevent thundering herd\n  - Custom retry condition functions\n  - AbortController support for cancellation\n\n- **TypeScript Support:**\n  - Full type definitions included\n  - Method decorators for class-based usage\n  - Generic type support for operation results\n\n---\n\n## Installation\n\nInstall via npm:\n\n```bash\nnpm install @apiratorjs/with-backoff\n```\n\nOr using yarn:\n\n```bash\nyarn add @apiratorjs/with-backoff\n```\n\n## Basic Usage\n\n### Simple Retry with Options\n\n```typescript\nimport { withBackoff } from '@apiratorjs/with-backoff';\n\nasync function fetchData() {\n  const result = await withBackoff(\n    async () => {\n      const response = await fetch('https://api.example.com/data');\n      return response.json();\n    },\n    {\n      maxAttempts: 3,\n      delayMs: 1000,\n      isRetryable: (error) => true // Specify which errors should be retried\n    }\n  );\n  \n  return result;\n}\n```\n\n### Using Specialized Error Handlers\n\n```typescript\nimport { withNetworkBackoff } from '@apiratorjs/with-backoff';\n\nasync function fetchWithNetworkRetry() {\n  return withNetworkBackoff(async () => {\n    const response = await fetch('https://api.example.com/data');\n    return response.json();\n  });\n}\n```\n\n### Combining Multiple Error Handlers\n\nYou can combine different backoff handlers to handle various types of errors:\n\n```typescript\nimport { \n  withNetworkBackoff, \n  withInternalServerErrorBackoff \n} from '@apiratorjs/with-backoff';\n\nclass ApiClient {\n  async fetchData() {\n    // First handle network errors\n    return withNetworkBackoff(async () => {\n      // Then handle 5xx errors\n      return withInternalServerErrorBackoff(async () => {\n        const response = await fetch('https://api.example.com/data');\n        if (!response.ok) {\n          throw new Error(`HTTP error! status: ${response.status}`);\n        }\n        return response.json();\n      });\n    });\n  }\n}\n\n// Usage\nconst client = new ApiClient();\ntry {\n  const data = await client.fetchData();\n  console.log('Data fetched successfully:', data);\n} catch (error) {\n  console.error('Failed after all retries:', error);\n}\n```\n\n### Using Decorators\n\n```typescript\nimport { \n  WithNetworkBackoff,\n  WithInternalServerErrorBackoff \n} from '@apiratorjs/with-backoff';\n\nclass ApiService {\n  @WithNetworkBackoff()\n  @WithInternalServerErrorBackoff()\n  async fetchUserProfile(userId: string) {\n    const response = await fetch(`https://api.example.com/users/${userId}`);\n    if (!response.ok) {\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n    return response.json();\n  }\n}\n```\n\n## Advanced Configuration\n\n### Custom Retry Conditions\n\n```typescript\nimport { withBackoff } from '@apiratorjs/with-backoff';\n\nconst result = await withBackoff(\n  async () => {\n    // Your operation here\n  },\n  {\n    maxAttempts: 5,\n    delayMs: 1000,\n    delayFactor: 2,\n    strategy: 'exponential',\n    jitter: 0.2,\n    isRetryable: (error) => {\n      // Custom retry condition\n      return error.code === 'CUSTOM_ERROR';\n    },\n    onRetry: async ({ attempt, delay, error }) => {\n      console.log(`Retry attempt ${attempt} after ${delay}ms due to:`, error);\n    }\n  }\n);\n```\n\n### Using Linear Backoff\n\n```typescript\nimport { withBackoff } from '@apiratorjs/with-backoff';\n\nconst result = await withBackoff(\n  async () => {\n    // Your operation here\n  },\n  {\n    maxAttempts: 3,\n    delayMs: 1000,\n    strategy: 'linear',\n    jitter: 0.1\n  }\n);\n```\n\n### Using AbortController\n\n```typescript\nimport { withBackoff } from '@apiratorjs/with-backoff';\n\nasync function fetchWithTimeout() {\n  const controller = new AbortController();\n  \n  // Automatically abort after 5 seconds\n  const timeout = setTimeout(() => controller.abort(), 5000);\n  \n  try {\n    const result = await withBackoff(\n      async () => {\n        const response = await fetch('https://api.example.com/data', {\n          signal: controller.signal // Pass the signal to fetch as well\n        });\n        return response.json();\n      },\n      {\n        maxAttempts: 3,\n        delayMs: 1000,\n        signal: controller.signal // Pass the signal to withBackoff\n      }\n    );\n    \n    clearTimeout(timeout);\n    return result;\n  } catch (error) {\n    clearTimeout(timeout);\n    if (error.name === 'AbortError') {\n      console.log('Operation was aborted:', error.message);\n    }\n    throw error;\n  }\n}\n```\n\n## API Reference\n\n### Core Function\n\n#### `withBackoff<T>(operation: () => Promise<T> | T, options?: TBackoffOptions): Promise<T>`\n\nMain function for retrying operations with backoff.\n\n### Specialized Functions\n\n- `withNetworkBackoff<T>(operation: () => Promise<T>, onRetry?: TBackoffOnRetry): Promise<T>`\n- `withInternalServerErrorBackoff<T>(operation: () => Promise<T>, onRetry?: TBackoffOnRetry): Promise<T>`\n- `withConnectionErrorMessageBackoff<T>(operation: () => Promise<T>, onRetry?: TBackoffOnRetry): Promise<T>`\n\n### Decorators\n\n- `@WithBackoff(options: TBackoffOptions)`\n- `@WithNetworkBackoff(onRetry?: TBackoffOnRetry)`\n- `@WithInternalServerErrorBackoff(onRetry?: TBackoffOnRetry)`\n- `@WithConnectionErrorMessageBackoff(onRetry?: TBackoffOnRetry)`\n\n### Options\n\n```typescript\ntype TBackoffOptions = {\n  maxAttempts?: number;      // Default: 6\n  delayMs?: number;          // Default: 20\n  delayFactor?: number;      // Default: 4\n  jitter?: number;           // Default: 0\n  strategy?: 'exponential' | 'linear';  // Default: 'exponential'\n  onRetry?: (options: TRetryOptions) => Promise<void> | void;\n  isRetryable?: (error: TError) => Promise<boolean> | boolean;\n  signal?: AbortSignal | null;  // Default: null, AbortController signal for cancellation\n};\n\ntype TRetryOptions = {\n  attempt: number;\n  delay: number;\n  error: TError;\n};\n```\n\n## Error Types Handled\n\n### Network Errors\n- ECONNRESET (Connection reset by peer)\n- ENOTFOUND (DNS lookup failed)\n- ETIMEDOUT (Operation timed out)\n- EPIPE (Broken pipe)\n- ENETUNREACH (Network unreachable)\n- And more...\n\n### Internal Server Errors\n- Any HTTP response with status code >= 500\n\n### Connection Error Messages\n- ECONNREFUSED\n- ConnectionRefused\n- Socket hang up\n- And other common connection error messages\n\n## Contributing\n\nContributions, issues, and feature requests are welcome! Feel free to check [issues page](https://github.com/apiratorjs/with-backoff/issues).\n\n## License\n\nThis project is [MIT](./LICENSE) licensed.\n","readmeFilename":"README.md"}