Skip to content

Deferred

Deferred: object

Defined in: Core/Deferred.ts:24

all: <T>(deferreds) => Deferred<{ [K in string | number | symbol]: T[K] extends Deferred<A> ? A : never }>

Combines an array or tuple of Deferred values into a single Deferred of a tuple. Resolves when all input Deferreds resolve.

T extends readonly Deferred<unknown>[]

T

Deferred<{ [K in string | number | symbol]: T[K] extends Deferred<A> ? A : never }>

const [a, b] = await Deferred.all([d1, d2]);

from: object

Promise: <A>(p) => Deferred<A> = fromPromise

Wraps a Promise or Deferred into a Deferred, structurally excluding rejection handlers, .catch(), .finally(), and chainable .then().

Precondition: p must never reject. If p rejects, the returned Deferred will never resolve — await-ing it will hang indefinitely. Use Task.Result.tryCatch to handle operations that may fail before converting to a Deferred.

A

Thenable<A>

Deferred<A>

const d = Deferred.from.Promise(Promise.resolve("hello"));
const value = await d; // "hello"

race: <A>(deferreds) => Deferred<A>

Races multiple Deferred values and resolves with the first one to settle.

A

readonly Deferred<A>[]

Deferred<A>

const winner = await Deferred.race([d1, d2]);

to: object

Promise: <A>(d) => Promise<A> = toPromise

Converts a Deferred back into a Promise.

A

Deferred<A>

Promise<A>

const p = Deferred.to.Promise(Deferred.from.Promise(Promise.resolve(42)));
// p is Promise<42>