# p-queue v9.0.0 - Product: p-queue (https://whatsnew.fyi/product/p-queue) - Vendor: Sindre Sorhus - Date: 2025-10-01 - Version: v9.0.0 - Original notes: https://github.com/sindresorhus/p-queue/releases/tag/v9.0.0 - Permalink: https://whatsnew.fyi/product/p-queue/releases/v9.0.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **removed** — Require Node.js 20 - **removed** — Remove throwOnTimeout option, timeouts now always throw - **changed** — Rename carryoverConcurrencyCount option to carryoverIntervalCount - **added** — Add .onError() method - **added** — Add .onPendingZero() method - **added** — Add pendingZero event - **added** — Add .runningTasks property - **added** — Add .isSaturated property - **added** — Add .onRateLimit() method - **added** — Add .onRateLimitCleared() method - **added** — Add .isRateLimited property - **added** — Add rateLimit event - **added** — Add rateLimitCleared event - **fixed** — Fix stack overflow with many aborted tasks - **fixed** — Fix interval cap race condition with high concurrency - **fixed** — Fix interval timing when queue becomes empty between task additions - **fixed** — Fix priority default handling for undefined values ###### Breaking - Require Node.js 20 b2600d5 - Remove `throwOnTimeout` option - timeouts now always throw e48716f - It was a mistake to not throw on timeouts and the option made it complicated to handle types. - If you really need the old behavior back: ```ts const result = await queue.add(fn).catch(error => { if (error instanceof TimeoutError) { return undefined; } throw error; }); ``` ###### Improvements - Rename `carryoverConcurrencyCount` option to `carryoverIntervalCount` a6096de - The old name still works, but will be removed in the next major version. - Add [`.onError()`](https://github.com/sindresorhus/p-queue#onerror) 7c27e1d - Add [`.onPendingZero()`](https://github.com/sindresorhus/p-queue#onpendingzero) (#230) 62efb74 - Add [`pendingZero`](https://github.com/sindresorhus/p-queue#pendingzero) event (#230) 62efb74 - Add [`.runningTasks`](https://github.com/sindresorhus/p-queue#runningtasks) fad8ee4 - Add [`.isSaturated`](https://github.com/sindresorhus/p-queue#issaturated) fad8ee4 - Add [`.onRateLimit()`](https://github.com/sindresorhus/p-queue#onratelimit) 701453e - Add [`.onRateLimitCleared()`](https://github.com/sindresorhus/p-queue#onratelimitcleared) 701453e - Add [`.isRateLimited`](https://github.com/sindresorhus/p-queue#isratelimited) 701453e - Add [`rateLimit`](https://github.com/sindresorhus/p-queue#ratelimit) event 701453e - Add [`rateLimitCleared`](https://github.com/sindresorhus/p-queue#ratelimitcleared) event 701453e ###### Fixes - Fix stack overflow with many aborted tasks 81cbae2 - Fix interval cap race condition with high concurrency 7fea658 - Fix interval timing when queue becomes empty between task additions 7b3f53e - Fix priority default handling for undefined values 439d512 --- https://github.com/sindresorhus/p-queue/compare/v8.1.1...v9.0.0