Skip to content

WaiterQueue

Defined in: packages/core/src/promise/waiter-queue.ts:17

A FIFO queue of pending promise resolvers, with abort-signal cancellation built in once.

T = void

The value a released waiter’s promise resolves with.

E = void

Per-waiter metadata a release policy can inspect via peek or releaseMatching — e.g. how many permits a Semaphore acquisition needs, or the target value a Counter wait is for. Defaults to void for policies with nothing to inspect (a plain FIFO release, as Mutex and Condition use).

new WaiterQueue<T, E>(): WaiterQueue<T, E>

WaiterQueue<T, E>

get size(): number

Defined in: packages/core/src/promise/waiter-queue.ts:21

Number of waiters currently queued.

number

enqueue(extra, signal?): Promise<T>

Defined in: packages/core/src/promise/waiter-queue.ts:39

Registers a new waiter and returns a promise that resolves with the value passed to whichever release call resolves it, or rejects if signal aborts first.

E

Per-waiter metadata, inspected later via peek or releaseMatching.

AbortSignal | null

Optional abort signal to cancel the wait.

Promise<T>


peek(): E | undefined

Defined in: packages/core/src/promise/waiter-queue.ts:26

The metadata of the longest-waiting entry, or undefined if empty.

E | undefined


releaseAll(value): number

Defined in: packages/core/src/promise/waiter-queue.ts:75

Removes and resolves every currently queued entry, in queue order.

T

number


releaseMatching(predicate, value): number

Defined in: packages/core/src/promise/waiter-queue.ts:89

Removes and resolves every entry whose metadata matches predicate, in queue order — for release policies that aren’t a FIFO prefix (e.g. Counter, which releases whichever waiters target the new value, regardless of queue position).

(extra) => boolean

T

number


releaseNext(value): boolean

Defined in: packages/core/src/promise/waiter-queue.ts:68

Removes and resolves the longest-waiting entry, if any.

T

boolean