
[48;5;235m[38;5;249m[49m[39m


[38;5;12m                                 [39m[38;2;255;187;0m[1m[4mAwesome Promises [0m[38;5;14m[1m[4m![0m[38;2;255;187;0m[1m[4mAwesome[0m[38;5;14m[1m[4m (https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)[0m[38;2;255;187;0m[1m[4m (https://github.com/sindresorhus/awesome)[0m

[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mA curated list of useful resources for JavaScript Promises[39m

[38;5;12mInspired by the [39m[38;5;14m[1mawesome[0m[38;5;12m (https://github.com/sindresorhus/awesome) list thing. Not to be confused with other awesome promises like "I promise you a million dollars" or "I promise you'll stay fit and never have to go to the gym again".[39m

[38;5;14m[1mTable of Contents[0m

[38;5;12m- [39m[38;5;14m[1mResources, Blogs, and Books[0m[38;5;12m (#resources-blogs-and-books)[39m
[38;5;12m- [39m[38;5;14m[1mPromises/A+ Implementations (ES6/ES2015 compatible)[0m[38;5;12m (#promisesa-implementations-es6es2015-compatible)[39m
[38;5;12m  - [39m[38;5;14m[1mStrict Implementations[0m[38;5;12m (#strict-implementations)[39m
[38;5;12m  - [39m[38;5;14m[1mImplementations with extras[0m[38;5;12m (#implementations-with-extras)[39m
[38;5;12m  - [39m[38;5;14m[1mFallbacks[0m[38;5;12m (#fallbacks)[39m
[38;5;12m- [39m[38;5;14m[1mConvenience Utilities[0m[38;5;12m (#convenience-utilities)[39m

[38;2;255;187;0m[4mResources, Blogs, and Books[0m

[38;2;255;187;0m[4mFor beginners[0m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mPromise Cookbook[0m[38;5;12m (https://github.com/mattdesl/promise-cookbook) - The why, what, and how. "A brief introduction [39m[38;5;14m[1m...[0m[38;5;12m  primarily aimed at frontend developers".[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mPromises for Asynchronous Programming[0m[38;5;12m (http://exploringjs.com/es6/ch_promises.html) - Chapter from [39m[38;5;14m[1mExploring ES6[0m[38;5;12m (http://exploringjs.com/)[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mYou[0m[38;5;14m[1m [0m[38;5;14m[1mDon't[0m[38;5;14m[1m [0m[38;5;14m[1mKnow[0m[38;5;14m[1m [0m[38;5;14m[1mJS:[0m[38;5;14m[1m [0m[38;5;14m[1mPromises[0m[38;5;12m [39m[38;5;12m(https://github.com/getify/You-Dont-Know-JS/blob/master/async%20&%20performance/ch3.md)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mChapter[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;14m[1mYou[0m[38;5;14m[1m [0m[38;5;14m[1mDon't[0m[38;5;14m[1m [0m[38;5;14m[1mKnow[0m[38;5;14m[1m [0m[38;5;14m[1mJS:[0m[38;5;14m[1m [0m[38;5;14m[1mAsync[0m[38;5;14m[1m [0m[38;5;14m[1m&[0m[38;5;14m[1m [0m[38;5;14m[1mPerformance[0m[38;5;12m [39m
[38;5;12m(https://github.com/getify/You-Dont-Know-JS/tree/master/async%20%26%20performance)[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mJavaScript Promises: an Introduction[0m[38;5;12m (https://developers.google.com/web/fundamentals/getting-started/primers/promises) - Basics of JavaScript's native promise implementation.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mJavaScript with Promises[0m[38;5;12m (http://shop.oreilly.com/product/0636920032151.do) - from O'Reilly. Short and to-the-point. Uses native and bluebird.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mPromise it won't hurt[0m[38;5;12m (https://github.com/stevekane/promise-it-wont-hurt) - An interactive [39m[38;5;14m[1mnodeschool[0m[38;5;12m (https://nodeschool.io/) workshop[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mES6 Kata Promises[0m[38;5;12m (http://es6katas.org/) - Promises Katas : [39m[38;5;14m[1mBasics[0m[38;5;12m (http://tddbin.com/#?kata=es6/language/promise/basics)[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mES6 Promises in Depth[0m[38;5;12m (https://ponyfoo.com/articles/es6-promises-in-depth)[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mAn Incremental Tutorial on Promises[0m[38;5;12m (http://www.sohamkamani.com/blog/2016/08/28/incremenal-tutorial-to-promises/) - An FAQ styled tutorial for beginners.[39m

[38;2;255;187;0m[4mDeep Dive[0m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mPromise Fun[0m[38;5;12m (https://github.com/sindresorhus/promise-fun) - @sindresorhus's notes, patterns, and solutions to common Promise problems[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mYou're Missing the Point of Promises[0m[38;5;12m (https://blog.domenic.me/youre-missing-the-point-of-promises/) - Promises are much more than callback aggregation, and that jQuery's implementation (prior to 3.0) isn't enough.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mWe have a problem with promises[0m[38;5;12m (https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html) - "Many of us are using promises without really understanding them."[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mPromise anti-patterns[0m[38;5;12m (https://github.com/petkaantonov/bluebird/wiki/Promise-anti-patterns) - Common misuses and how to avoid them.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mPromise anti-patterns (2)[0m[38;5;12m (http://taoofcode.net/promise-anti-patterns/) - Another set of promises anti-patterns[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mPromise Ponderings, (Anti-)Patterns, and Apologies[0m[38;5;12m (https://sdgluck.github.io/2015/08/24/promise-ponderings-patterns-apologies/) - Promise behaviour demonstrated and explained by common questions and their answers.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mJavascript Promises...In Wicked Detail[0m[38;5;12m (http://www.mattgreer.org/articles/promises-in-wicked-detail/) - Recreate the promise implementation[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mWriting Promise-Using Specifications[0m[38;5;12m (https://www.w3.org/2001/tag/doc/promises-guide) - "This document gives guidance on how to write specifications that create, accept, or manipulate promises"[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mAsync functions - making promises friendly[0m[38;5;12m (https://developers.google.com/web/fundamentals/getting-started/primers/async-functions)[39m

[38;2;255;187;0m[4mReferences[0m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mPromises/A+ specification[0m[38;5;12m (https://promisesaplus.com/)[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mcaniuse promises[0m[38;5;12m (http://caniuse.com/#feat=promises)[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mFates and States[0m[38;5;12m (https://github.com/domenic/promises-unwrapping/blob/master/docs/states-and-fates.md) - Quick definitions of possible states.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mPromisees[0m[38;5;12m (https://bevacqua.github.io/promisees/) - Promise visualization playground for the adventurous.[39m

[38;2;255;187;0m[4mPromises/A+ Implementations (ES6/ES2015 compatible)[0m

[38;2;255;187;0m[4mStrict Implementations[0m
[38;5;12mThese implement no more or less than the es6 spec. They make great polyfills and are exceptionally compatible with native promises.[39m

[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mpinkie[0m[38;5;12m (https://github.com/floatdrop/pinkie) - Ponyfill. Node-oriented, but [39m[38;5;14m[1mbrowserifyable[0m[38;5;12m (https://github.com/substack/node-browserify). [39m[48;2;30;30;40m[38;5;13m[3mExtremely[0m[38;5;12m small implementation.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mnative-promise-only[0m[38;5;12m (https://github.com/getify/native-promise-only) - Polyfill. Browser and node-compatible.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mes6-promise[0m[38;5;12m (https://github.com/stefanpenner/es6-promise) - Opt-in polyfill. A strict-spec subset of rsvp.js.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mlie[0m[38;5;12m (https://github.com/calvinmetcalf/lie) - Small, browserifyable with an opt-in polyfill.[39m

[38;2;255;187;0m[4mImplementations with extras[0m
[38;5;12mAll of these provide more features than the language yet remain compatible. Node + Browsers for all.[39m

[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mbluebird[0m[38;5;12m (https://github.com/petkaantonov/bluebird) - Fully featured, extremely performant. Long stack traces & generator/coroutine support.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mcreed[0m[38;5;12m (https://github.com/briancavalier/creed) - Hyper performant & full featured like Bluebird, but FP-oriented. Coroutines, generators, promises, ES2015 iterables, & fantasy-land spec.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mrsvp.js[0m[38;5;12m (https://github.com/tildeio/rsvp.js/) - Lightweight with a few extras. Compatible down to IE6![39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mQ[0m[38;5;12m (https://github.com/kriskowal/q) - One of the original implementations. Long stack traces and other goodies.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mthen/promise[0m[38;5;12m (https://github.com/then/promise) - Small with [39m[48;5;235m[38;5;249mnodeify[49m[39m[38;5;12m, [39m[48;5;235m[38;5;249mdenodify[49m[39m[38;5;12m and [39m[48;5;235m[38;5;249mdone()[49m[39m[38;5;12m additions.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mwhen.js[0m[38;5;12m (https://github.com/cujojs/when) - Packed with control flow, functional, and utility methods.[39m


[38;2;255;187;0m[4mFallbacks[0m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mnative-or-bluebird[0m[38;5;12m (https://www.npmjs.com/package/native-or-bluebird) - Helps transition to completely native.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mpinkie-promise[0m[38;5;12m (https://github.com/floatdrop/pinkie-promise) - Use native, or fall back to [39m[48;5;235m[38;5;249mpinkie[49m[39m[38;5;12m. Great for node library authors.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1many-promise[0m[38;5;12m (https://github.com/kevinbeaty/any-promise) - Loads the first available implementation. Safe for browserify.[39m

[38;2;255;187;0m[4mConvenience Utilities[0m
[38;5;12mNative[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mstrictly[39m[38;5;12m [39m[38;5;12mspec-compliant[39m[38;5;12m [39m[38;5;12mpromises[39m[38;5;12m [39m[38;5;12mare[39m[38;5;12m [39m[38;5;12mawesome[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mcompatibility,[39m[38;5;12m [39m[38;5;12mfuture-proofness,[39m[38;5;12m [39m[38;5;12mlibrary[39m[38;5;12m [39m[38;5;12mauthors,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mbrowsers.[39m[38;5;12m [39m[38;5;12mHowever,[39m[38;5;12m [39m[38;5;12mlibraries[39m[38;5;12m [39m[38;5;12mlike[39m[38;5;12m [39m[38;5;12mbluebird[39m[38;5;12m [39m[38;5;12mpatch[39m[38;5;12m [39m[38;5;12mgoodies[39m[38;5;12m [39m[38;5;12monto[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[48;5;235m[38;5;249mPromise[49m[39m[38;5;12m [39m[38;5;12mconstructor[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mprototype.[39m[38;5;12m [39m[38;5;12mSolution?[39m[38;5;12m [39m[38;5;12mtiny[39m[38;5;12m [39m
[38;5;12mmodules[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mcourse![39m

[38;2;255;187;0m[4msindresorhus's many Promise utilities ([0m[38;5;14m[1m[4msee notes[0m[38;2;255;187;0m[4m (https://github.com/sindresorhus/promise-fun))[0m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mdelay[0m[38;5;12m (https://github.com/sindresorhus/delay) - Delay a promise a specified amount of time.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mpify[0m[38;5;12m (https://github.com/sindresorhus/pify) - Promisify ("denodify") a callback-style function.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mloud-rejection[0m[38;5;12m (https://github.com/sindresorhus/loud-rejection) - Make unhandled promise rejections fail loudly instead of the default silent fail.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mhard-rejection[0m[38;5;12m (https://github.com/sindresorhus/hard-rejection) - Make unhandled promise rejections fail hard right away instead of the default silent fail[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-queue[0m[38;5;12m (https://github.com/sindresorhus/p-queue) - Promise queue with concurrency control[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-break[0m[38;5;12m (https://github.com/sindresorhus/p-break) - Break out of a promise chain[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-lazy[0m[38;5;12m (https://github.com/sindresorhus/p-lazy) - Create a lazy promise that defers execution until [39m[48;5;235m[38;5;249m.then()[49m[39m[38;5;12m or [39m[48;5;235m[38;5;249m.catch()[49m[39m[38;5;12m is called[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-defer[0m[38;5;12m (https://github.com/sindresorhus/p-defer) - Create a deferred promise[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-if[0m[38;5;12m (https://github.com/sindresorhus/p-if) - Conditional promise chains[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-tap[0m[38;5;12m (https://github.com/sindresorhus/p-tap) - Tap into a promise chain without affecting its value or state[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-map[0m[38;5;12m (https://github.com/sindresorhus/p-map) - Map over promises concurrently[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-all[0m[38;5;12m (https://github.com/sindresorhus/p-all) - Run promise-returning & async functions concurrently with optional limited concurrency[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-limit[0m[38;5;12m (https://github.com/sindresorhus/p-limit) - Run multiple promise-returning & async functions with limited concurrency[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-times[0m[38;5;12m (https://github.com/sindresorhus/p-times) - Run promise-returning & async functions a specific number of times concurrently[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-catch-if[0m[38;5;12m (https://github.com/sindresorhus/p-catch-if) - Conditional promise catch handler[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-time[0m[38;5;12m (https://github.com/sindresorhus/p-time) - Measure the time a promise takes to resolve[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-log[0m[38;5;12m (https://github.com/sindresorhus/p-log) - Log the value/error of a promise[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-filter[0m[38;5;12m (https://github.com/sindresorhus/p-filter) - Filter promises concurrently[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-settle[0m[38;5;12m (https://github.com/sindresorhus/p-settle) - Settle promises concurrently and get their fulfillment value or rejection reason[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-memoize[0m[38;5;12m (https://github.com/sindresorhus/p-memoize) - Memoize promise-returning & async functions[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-whilst[0m[38;5;12m (https://github.com/sindresorhus/p-whilst) - Calls a function repeatedly while a condition returns true and then resolves the promise[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-throttle[0m[38;5;12m (https://github.com/sindresorhus/p-throttle) - Throttle promise-returning & async functions[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-debounce[0m[38;5;12m (https://github.com/sindresorhus/p-debounce) - Debounce promise-returning & async functions[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-retry[0m[38;5;12m (https://github.com/sindresorhus/p-retry) - Retry a promise-returning or async function[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-wait-for[0m[38;5;12m (https://github.com/sindresorhus/p-wait-for) - Wait for a condition to be true[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-timeout[0m[38;5;12m (https://github.com/sindresorhus/p-timeout) - Timeout a promise after a specified amount of time[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-race[0m[38;5;12m (https://github.com/sindresorhus/p-race) - A better [39m[48;5;235m[38;5;249mPromise.race()[49m[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-try[0m[38;5;12m (https://github.com/sindresorhus/p-try) - [39m[48;5;235m[38;5;249mPromise#try()[49m[39m[38;5;12m ponyfill - Starts a promise chain[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-finally[0m[38;5;12m (https://github.com/sindresorhus/p-finally) - [39m[48;5;235m[38;5;249mPromise#finally()[49m[39m[38;5;12m ponyfill - Invoked when the promise is settled regardless of outcome[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-any[0m[38;5;12m (https://github.com/sindresorhus/p-any) - Wait for any promise to be fulfilled[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-some[0m[38;5;12m (https://github.com/sindresorhus/p-some) - Wait for a specified number of promises to be fulfilled[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-pipe[0m[38;5;12m (https://github.com/sindresorhus/p-pipe) - Compose promise-returning & async functions into a reusable pipeline[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-each-series[0m[38;5;12m (https://github.com/sindresorhus/p-each-series) - Iterate over promises serially[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-map-series[0m[38;5;12m (https://github.com/sindresorhus/p-map-series) - Map over promises serially[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-reduce[0m[38;5;12m (https://github.com/sindresorhus/p-reduce) - Reduce a list of values using promises into a promise for a value[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mp-props[0m[38;5;12m (https://github.com/sindresorhus/p-props) - Like [39m[48;5;235m[38;5;249mPromise.all()[49m[39m[38;5;12m but for [39m[48;5;235m[38;5;249mMap[49m[39m[38;5;12m and [39m[48;5;235m[38;5;249mObject[49m[39m

[38;2;255;187;0m[4mOthers[0m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mpromise-method[0m[38;5;12m (https://github.com/wbinnssmith/promise-method) - Standalone [39m[48;5;235m[38;5;249mbluebird.method[49m[39m[38;5;12m. Turn a synchronously-returning method into a promise-returning one.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mis-promise[0m[38;5;12m (https://github.com/then/is-promise) - Determine if something looks like a Promise.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1msprom[0m[38;5;12m (https://github.com/then/sprom) - Resolve when a stream ends. Optional buffering (be careful with this!)[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mtask.js[0m[38;5;12m (https://github.com/mozilla/task.js) - Write async functions in a blocking style using promises and generators. Like [39m[48;5;235m[38;5;249mbluebird.coroutine[49m[39m[38;5;12m.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mco[0m[38;5;12m (https://github.com/tj/co) - Like [39m[48;5;235m[38;5;249mtask.js[49m[39m[38;5;12m and [39m[48;5;235m[38;5;249mbluebird.coroutine[49m[39m[38;5;12m, but supports thunks too.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mlie-fs[0m[38;5;12m (https://www.npmjs.com/package/lie-fs) - Promise wrappers for Node's FS API.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mpromise-do-until[0m[38;5;12m (https://github.com/busterc/promise-do-until) - Calls a function repeatedly until a condition returns true and then resolves the promise.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mpromise-do-whilst[0m[38;5;12m (https://github.com/busterc/promise-do-whilst) - Calls a function repeatedly while a condition returns true and then resolves the promise.[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mpromise-semaphore[0m[38;5;12m (https://github.com/samccone/promise-semaphore) - Push a set of work to be done in a configurable serial fashion[39m
[48;5;12m[38;5;11m⟡[49m[39m[38;5;12m [39m[38;5;14m[1mpromise-nodeify[0m[38;5;12m (https://github.com/kevinoid/promise-nodeify) - Standalone [39m[48;5;235m[38;5;249mnodeify[49m[39m[38;5;12m method which calls a Node-style callback on resolution or rejection.[39m

[38;2;255;187;0m[4mLicense[0m
[38;5;12mLicensed under the [39m[38;5;14m[1mCreative Commons CC0 License[0m[38;5;12m (https://creativecommons.org/publicdomain/zero/1.0/).[39m
