Skip to content

Promise

Functions for working with Promise<T> values.

FunctionSignatureDescription
Promise.allArray<Promise<T>> -> Promise<Array<T>>Wait for all, fail on first rejection
Promise.raceArray<Promise<T>> -> Promise<T>First to settle (resolve or reject)
Promise.anyArray<Promise<T>> -> Promise<T>First to resolve, fail if all reject
Promise.allSettledArray<Promise<T>> -> Promise<Array<Result<T, Error>>>Wait for all, return Results
Promise.resolveT -> Promise<T>Wrap a value in a resolved Promise
Promise.rejectE -> Promise<T>Create a rejected Promise
Promise.delaynumber -> Promise<()>Wait for milliseconds
// Wait for all fetches
const users = await Promise.all([fetchUser(1), fetchUser(2), fetchUser(3)])
// Race — first response wins
const fastest = await Promise.race([fetchFromCDN(url), fetchFromOrigin(url)])
// allSettled returns Array<Result<T, Error>> — natural fit for Floe
const results = await Promise.allSettled([fetchA(), fetchB(), fetchC()])
const successes = results |> Array.filter(Result.isOk)
// Delay
await Promise.delay(1000) // wait 1 second

Promise.allSettled returns Array<Result<T, Error>> instead of JavaScript’s {status, value, reason} shape, so you can use all Result helpers on the output.