pipelined
Failure is a value, not an exception.
Typed errors, explicit absence, and composable async for TypeScript.
Errors stay in the typeA failed call returns a typed Result instead of throwing an unknown. The compiler shows every place that has to handle it.
Async work that can be stoppedTask.Result threads an AbortSignal and always settles with a typed result, so cancellation does not surface as an unhandled rejection.
Overlapping calls get a policyOp decides whether a new call replaces, drops, or waits for the one in flight, and applies retries and timeouts in one place.
Components talk in typed messagesEventBus delivers a typed event to every subscriber, queues re-entrant emits instead of recursing, and keeps one failing subscriber from stopping the rest.
States that cannot disagreeLoading, failed, and loaded become one union instead of three flags that can contradict each other. Machine rejects events the current state does not handle.
Multi-step writes that roll backTransaction runs steps in order and undoes completed ones in reverse when a later step fails, reporting the failed step and any undo errors.
The tour covers the remaining families: dependency graphs, resource acquisition, request batching, circuit breaking, collections, and optics. When you know the problem but not the module, Choosing a Container answers that in one page, and the recipes join several modules in one feature.
Contributing
Section titled “Contributing”Every page has an edit link. The contributor handbook covers setup, tests, module authoring, and guide writing. Contributions of every size are welcome.