Like `task.js` and `bluebird.coroutine`, but supports thunks too.
Delay a promise a specified amount of time.
Make unhandled promise rejections fail hard right away instead of the default silent fail
Determine if something looks like a Promise.
Promise wrappers for Node's FS API.
Make unhandled promise rejections fail loudly instead of the default silent fail.
Run promise-returning & async functions concurrently with optional limited concurrency
Wait for any promise to be fulfilled
Break out of a promise chain
Conditional promise catch handler
Debounce promise-returning & async functions
Create a deferred promise
Iterate over promises serially
Filter promises concurrently
`Promise#finally()` ponyfill - Invoked when the promise is settled regardless of outcome
Conditional promise chains
Create a lazy promise that defers execution until `.then()` or `.catch()` is called
Run multiple promise-returning & async functions with limited concurrency
Log the value/error of a promise
Map over promises concurrently
Map over promises serially
Memoize promise-returning & async functions
Compose promise-returning & async functions into a reusable pipeline
Like `Promise.all()` but for `Map` and `Object`
Promise queue with concurrency control
A better `Promise.race()`
Reduce a list of values using promises into a promise for a value
Retry a promise-returning or async function
Settle promises concurrently and get their fulfillment value or rejection reason
Wait for a specified number of promises to be fulfilled
Tap into a promise chain without affecting its value or state
Throttle promise-returning & async functions
Measure the time a promise takes to resolve
Timeout a promise after a specified amount of time
Run promise-returning & async functions a specific number of times concurrently
`Promise#try()` ponyfill - Starts a promise chain
Wait for a condition to be true
Calls a function repeatedly while a condition returns true and then resolves the promise
Promisify ("denodify") a callback-style function.
Calls a function repeatedly until a condition returns true and then resolves the promise.
Calls a function repeatedly while a condition returns true and then resolves the promise.
Standalone `bluebird.method`. Turn a synchronously-returning method into a promise-returning one.
Standalone `nodeify` method which calls a Node-style callback on resolution or rejection.
Push a set of work to be done in a configurable serial fashion
Resolve when a stream ends. Optional buffering (be careful with this!)
Write async functions in a blocking style using promises and generators. Like `bluebird.coroutine`.
Loads the first available implementation. Safe for browserify.
Fully featured, extremely performant. Long stack traces & generator/coroutine support.
Hyper performant & full featured like Bluebird, but FP-oriented. Coroutines, generators, promises, ES2015 iterables, & fantasy-land spec.
Opt-in polyfill. A strict-spec subset of rsvp.js.
Small, browserifyable with an opt-in polyfill.
Helps transition to completely native.
Polyfill. Browser and node-compatible.
Ponyfill. Node-oriented, but browserifyable. *Extremely* small implementation.
Use native, or fall back to `pinkie`. Great for node library authors.
One of the original implementations. Long stack traces and other goodies.
Lightweight with a few extras. Compatible down to IE6!
Small with `nodeify`, `denodify` and `done()` additions.
Packed with control flow, functional, and utility methods.
An FAQ styled tutorial for beginners.
Promises Katas : Basics
Quick definitions of possible states.
Recreate the promise implementation
Basics of JavaScript's native promise implementation.
from O'Reilly. Short and to-the-point. Uses native and bluebird.
Common misuses and how to avoid them.
Another set of promises anti-patterns
The why, what, and how. "A brief introduction [...] primarily aimed at frontend developers".
@sindresorhus's notes, patterns, and solutions to common Promise problems
An interactive nodeschool workshop
Promise behaviour demonstrated and explained by common questions and their answers.
Promise visualization playground for the adventurous.
Chapter from Exploring ES6
"Many of us are using promises without really understanding them."
"This document gives guidance on how to write specifications that create, accept, or manipulate promises"
Chapter from You Don't Know JS: Async & Performance
Promises are much more than callback aggregation, and that jQuery's implementation (prior to 3.0) isn't enough.