glendix/js/promise

Provides typed Promise composition at the JavaScript FFI boundary.

Compatible operations delegate to gleam/javascript/promise so their behavior stays owned by that package. Only rejected-Promise construction and Promise-returning recovery keep a minimal handwritten adapter, because the package has no primitive that preserves their current contract.

Types

Represents a JavaScript Promise rejection reason.

pub type PromiseRejection

Values

pub fn all(
  promises promises: List(promise.Promise(value)),
) -> promise.Promise(List(value))

Waits for every Promise to fulfill, preserving input order.

pub fn await_(
  promise promise: promise.Promise(value),
  then callback: fn(value) -> Nil,
) -> Nil

Runs a callback exactly once after a Promise fulfills without blocking.

pub fn catch_(
  promise promise: promise.Promise(value),
  with callback: fn(PromiseRejection) -> promise.Promise(value),
) -> promise.Promise(value)

Recovers from a Promise rejection.

Keeps a custom adapter because gleam/javascript/promise.rescue recovers with a plain value, so it cannot preserve this helper’s Promise-returning recovery, its opaque PromiseRejection reason, or its automatic flattening.

pub fn map(
  promise promise: promise.Promise(value),
  with callback: fn(value) -> next,
) -> promise.Promise(next)

Maps a fulfilled Promise value.

pub fn race(
  promises promises: List(promise.Promise(value)),
) -> promise.Promise(value)

Resolves or rejects with the first completed Promise.

pub fn reject(reason reason: String) -> promise.Promise(value)

Creates a rejected Promise with an error message.

Keeps a custom adapter because gleam/javascript/promise exposes no rejection constructor. The reason is wrapped in a JavaScript Error, which is the contract callers depend on.

pub fn resolve(value value: value) -> promise.Promise(value)

Creates an already fulfilled Promise.

pub fn then_(
  promise promise: promise.Promise(value),
  with callback: fn(value) -> promise.Promise(next),
) -> promise.Promise(next)

Chains a Promise-producing callback.

Search Document