Bluebird - Promise library with unmatched performance.

  •        89

Bluebird is a fully featured promise library with focus on innovative features and performance. Bluebird is built with the following design principles in mind:

  • Pragmatic and not theoretical. - Bluebird will always pick the pragmatic route vs the theoretically elegant one when there is a conflict. The library's API was created based on real-life use cases and after a lot of consideration.
  • Fully featured without bloat - Bluebird provides all the tools and utilities needed to realize a highly expressive and fluent DSL for asynchronous JavaScript without suffering from bloat by avoiding incorporating features that are solely motivated by theoretical arguments, have extremely narrow applicability or have limited synergy and composability with existing features.
  • Easy to debug - A major consequence of choosing pragmatism over theoretical elegancy, a property that among promise libraries taken to this extent is unique to bluebird.
    • Bluebird ships with the best cross-platform long stack traces out there and a warning system. This helps you recognize common and devastating promise usage mistakes early before they lead to hard to debug code later.
    • Unhandled errors are not silently swallowed by default but reported along with helpful stack traces where applicable. All of this is of course configurable.
  • Zero overhead abstraction - In server-side applications the performance of a promise implementation matters. Bluebird's server side performance is measured with highly relevant realistic end-to-end macro benchmarks and consistently comes out on top. We understand that if bluebird is as close to a zero cost abstraction as possible, developers won't be tempted to short-circuit and absorb complexity themselves.
  • Runs everywhere - Bluebird runs on pretty much every platform. This makes bluebird ideal for projects who care about providing consistent cross-platform and cross-version experience. It runs on old IE, it has even been known to run on Netscape 7.
  • Spec compatible - bluebird can work as a drop-in replacement for native promises for an instant performance boost. It passes the Promises/A+ test suite and is fully spec compliant.



    Related Projects


    •    Javascript

    Promise-mysql is a wrapper for mysqljs/mysql that wraps function calls with Bluebird promises. Usually this would be done with Bluebird's .promisifyAll() method, but mysqljs/mysql's footprint is different to that of what Bluebird expects. At the minute only the standard connection (using .createConnection()) and the pool (using .createPool()) is supported. createPoolCluster is not implemented yet.

    promise-polyfill - Lightweight ES6 Promise polyfill for the browser and node. A+ Compliant

    •    Javascript

    Lightweight ES6 Promise polyfill for the browser and node. Adheres closely to the spec. It is a perfect polyfill IE, Firefox or any other browser that does not support native promises. For API information about Promises, please check out this article HTML5Rocks article.

    co - The ultimate generator based flow-control goodness for nodejs (supports thunks, promises, etc)

    •    Javascript

    Generator based control flow goodness for nodejs and the browser, using promises, letting you write non-blocking code in a nice-ish has been released, which now relies on promises. It is a stepping stone towards the async/await proposal. The primary API change is how co() is invoked. Before, co returned a "thunk", which you then called with a callback and optional arguments. Now, co() returns a promise.

    promise-fun - Promise packages, patterns, chat, and tutorials


    I intend to use this space to document my promise modules, useful promise patterns, and how to solve common problems. For now though, you can see all my promise modules below.Star this repo to show your interest, so I can know whether to prioritize this work.

    chai-as-promised - Extends Chai with assertions about promises.

    •    Javascript

    Chai as Promised extends Chai with a fluent language for asserting facts about promises. Notice: either return or notify(done) must be used with promise assertions. This can be a slight departure from the existing format of assertions being used on a project or by a team. Those other assertions are likely synchronous and thus do not require special handling.

    AwaitKit - The ES8 Async/Await control flow for Swift

    •    Swift

    AwaitKit is a powerful Swift library inspired by the Async/Await specification in ES8 (ECMAScript 2017) which provides a powerful way to write asynchronous code in a sequential manner. Internally it uses PromiseKit to create and manage promises.

    Awaity.js - A functional, lightweight alternative to bluebird.js, built with async / await in mind.

    •    Javascript

    A functional, lightweight alternative to bluebird.js, built with async / await in mind. Functional utility library for async / await Think lodash for promises.

    p-progress - Create a promise that reports progress

    •    Javascript

    Useful for reporting progress to the user during long-running async operations.Same as the Promise constructor, but with an appended progress parameter in executor.

    Promises, Promises...

    •    Javascript

    A self-contained JavaScript implementation of the Promises/A+ specification (and Deferred provider), suitable for inclusion in larger libraries and projects.

    Hydra - Lightweight full-featured Promises, Async & Await Library in Swift

    •    Swift

    A more detailed look at how Hydra works can be found in ARCHITECTURE file or on Medium.

    es6-promise - A polyfill for ES6-style Promises

    •    Javascript

    A lightweight library that provides tools for organizing asynchronous code

    promises-tests - Compliances tests for Promises/A+

    •    Javascript

    This suite tests compliance of a promise implementation with the Promises/A+ specification. Passing the tests in this repo means that you have a Promises/A+ compliant implementation of the then() method, and you can display the Promises/A+ logo in your README. You can also send a pull request to have your implementation listed on the implementations page.

    promises - Promises/A+ library for PHP with synchronous support

    •    PHP

    Promises/A+ implementation that handles promise chaining and resolution iteratively, allowing for "infinite" promise chaining while keeping the stack size constant. Read this blog post for a general introduction to promises. A promise represents the eventual result of an asynchronous operation. The primary way of interacting with a promise is through its then method, which registers callbacks to receive either a promise's eventual value or the reason why the promise cannot be fulfilled.