How do you create a custom TimeoutError in JavaScript?
Create a class extending Error: class TimeoutError extends Error { constructor(ms) { super(`timed out after ${ms}ms`); this.name = 'TimeoutError'; } }. Then reject with new TimeoutError(ms) in the timeout promise.
Verify This Answer
Cross-check this information using these trusted sources:
More FAQs in Implementing Timeout with Promises in JavaScript
Use Promise.race: race the operation against a timeout promise. Promise.race([fetch('/api'), new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), 5000))]). If the timeout fires first, the race rejects.
Use AbortController: const controller = new AbortController(); fetch(url, { signal: controller.signal }). Set a timeout to call controller.abort(). This actually cancels the fetch, not just races it.
To avoid a memory leak. The timeout promise's timer keeps running even after the race settles. clearTimeout cancels the timer. Use try/finally to clear it regardless of outcome.
Still have questions?
Browse all our FAQs or reach out to our support team
