# p-queue changelog > Promise queue with concurrency control. - Vendor: Sindre Sorhus - Category: Frameworks & Libraries - Official site: https://github.com/sindresorhus/p-queue - Tracked by: What's New (https://whatsnew.fyi/product/p-queue) - Harvested from: GitHub (sindresorhus/p-queue) - Entries below: 10 (newest first) 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'. ## Releases ### v9.3.3 - Date: 2026-07-22 - Version: v9.3.3 - Original notes: https://github.com/sindresorhus/p-queue/releases/tag/v9.3.3 - Permalink: https://whatsnew.fyi/product/p-queue/releases/v9.3.3 - **fixed** — Rate limiter no longer delays tasks in a fresh window when intervalCap is greater than 1 - Fix rate limiter delaying tasks in a fresh window when `intervalCap > 1` 89a10bb --- https://github.com/sindresorhus/p-queue/compare/v9.3.2...v9.3.3 ### v9.3.2 - Date: 2026-07-20 - Version: v9.3.2 - Original notes: https://github.com/sindresorhus/p-queue/releases/tag/v9.3.2 - Permalink: https://whatsnew.fyi/product/p-queue/releases/v9.3.2 - **fixed** — Fix per-task timeout validation - Fix per-task timeout validation 9efde42 --- https://github.com/sindresorhus/p-queue/compare/v9.3.1...v9.3.2 ### v9.3.1 - Date: 2026-07-03 - Version: v9.3.1 - Original notes: https://github.com/sindresorhus/p-queue/releases/tag/v9.3.1 - Permalink: https://whatsnew.fyi/product/p-queue/releases/v9.3.1 - **fixed** — Fix `onSizeLessThan()` resolving late when the queue drains without a completion - Fix `onSizeLessThan()` resolving late when the queue drains without a completion d9cf2be --- https://github.com/sindresorhus/p-queue/compare/v9.3.0...v9.3.1 ### v9.3.0 - Date: 2026-05-16 - Version: v9.3.0 - Original notes: https://github.com/sindresorhus/p-queue/releases/tag/v9.3.0 - Permalink: https://whatsnew.fyi/product/p-queue/releases/v9.3.0 - **added** — Add timeoutRemaining to runningTasks - Add `timeoutRemaining` to `runningTasks` 57d0a1a --- https://github.com/sindresorhus/p-queue/compare/v9.2.0...v9.3.0 ### v9.2.0 - Date: 2026-04-27 - Version: v9.2.0 - Original notes: https://github.com/sindresorhus/p-queue/releases/tag/v9.2.0 - Permalink: https://whatsnew.fyi/product/p-queue/releases/v9.2.0 - **changed** — Improve performance - Improve performance (#244) 87077d0 --- https://github.com/sindresorhus/p-queue/compare/v9.1.2...v9.2.0 ### v9.1.2 - Date: 2026-04-07 - Version: v9.1.2 - Original notes: https://github.com/sindresorhus/p-queue/releases/tag/v9.1.2 - Permalink: https://whatsnew.fyi/product/p-queue/releases/v9.1.2 - **fixed** — Export PriorityQueue type - Fix: Export `PriorityQueue` type (#242) a20e1f3 --- https://github.com/sindresorhus/p-queue/compare/v9.1.1...v9.1.2 ### v9.1.1 - Date: 2026-04-01 - Version: v9.1.1 - Original notes: https://github.com/sindresorhus/p-queue/releases/tag/v9.1.1 - Permalink: https://whatsnew.fyi/product/p-queue/releases/v9.1.1 - **fixed** — Fix signal option not rejecting when task is aborted while queued - Fix `signal` option not rejecting when task is aborted while queued a64b316 - If you use a custom queue class, you will have to add a `remove()` method. See the built-in class. --- https://github.com/sindresorhus/p-queue/compare/v9.1.0...v9.1.1 ### v9.1.0 - Date: 2026-01-05 - Version: v9.1.0 - Original notes: https://github.com/sindresorhus/p-queue/releases/tag/v9.1.0 - Permalink: https://whatsnew.fyi/product/p-queue/releases/v9.1.0 - **added** — Add strict option for sliding window rate limiting - Add [`strict`](https://github.com/sindresorhus/p-queue?tab=readme-ov-file#strict) option for sliding window rate limiting 03b8156 --- https://github.com/sindresorhus/p-queue/compare/v9.0.1...v9.1.0 ### v9.0.1 - Date: 2025-11-18 - Version: v9.0.1 - Original notes: https://github.com/sindresorhus/p-queue/releases/tag/v9.0.1 - Permalink: https://whatsnew.fyi/product/p-queue/releases/v9.0.1 - **fixed** — Remove abort listener when operation completes - Fix: Remove abort listener when operation completes (#235) e9074f0 --- https://github.com/sindresorhus/p-queue/compare/v9.0.0...v9.0.1 ### v9.0.0 - 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 - **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