Navigation

Interop with native promises

fromEager⁠#

This function converts an async function to a LazyPromise, and supports the AbortController API:

// Type inferred as LazyPromise<string>
const lazyPromise = fromEager(async ({ signal }) => {
  const response = await fetch("https://example.com", { signal });
  return response.text();
});

If the subscription is disposed before the returned promise settles, the signal is aborted with an AbortError. The callback can also be a regular (non-async) function, and any non-Promise values it returns are passed on synchronously.

toEager⁠#

This is a method that converts a LazyPromise to a Promise, and it too supports AbortController.

const controller = new AbortController();

// `signal` is optional.
const promise = lazyPromise.toEager({ signal: controller.signal });

// Disposes the subscription and rejects `promise` with
// `controller.signal.reason`.
controller.abort();