ts-async

Promise support utilites and helpers for TypeScript

View on GitHub

@nevware21/ts-async

Promise support implementations and helpers for TypeScriptbuilt for minification

GitHub Workflow Status (main) codecov npm version downloads downloads

Description

This library provides Promise implementations (synchronous, idle, asynchronous and native), helpers and aliases built and tested using TypeScript. Apart from providing idle and synchronous implementations the primary focus is on supporting the creation of production code that can be better minified (resulting in a smaller runtime payload).

Provided implementations:

The primary helpers are

All promise implementations are validated using TypeScript with async / await and the internal helper functions doAwait, doFinally and doAwaitResponse helpers. Usage of the doAwait is recommended as this will avoids the additional boiler plate code that is added by TypeScript when handling the branches in an async / await functions, this does of course mean that your calling functions will also need to handle this async operations via callbacks rather than just causing the code path to “halt” at the await and can therefore may be a little more complex (depending on your implementation), however, you are not restricted to only using await or doAwait they can be used together.

Also of note is that all implementations will “emit/dispatch” the unhandled promise rejections event (if supported by the runtime) using the standard runtime mechanisms. So any existing handlers for native (new Promise) unhandled rejections will also receive them from the idle, sync and async implementations. The only exception to this is when the runtime (like IE) doesn’t support this event in those cases “if” an onunhandledrejection function is registered it will be called or failing that it will logged to the console (if possible).

The provided polyfill wrapper is build around the asynchronous promise implementation which is tested and validated against the standard native (Promise()) implementations for node, browser and web-worker to ensure compatibility.

Documentation

Documentation generated from source code via typedoc