by digitaldesignlabs

digitaldesignlabs /es6-promisify

Convert callback-based javascript to ES6 Promises

451 Stars 31 Forks Last release: almost 4 years ago (v5.0.0) MIT License 80 Commits 20 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Travis CI


Converts callback-based functions to ES6/ES2015 Promises, using a boilerplate callback function.


Install with npm

npm install es6-promisify


const {promisify} = require("es6-promisify");

// Convert the stat function const fs = require("fs"); const stat = promisify(fs.stat);

// Now usable as a promise! try { const stats = await stat("example.txt"); console.log("Got stats", stats); } catch (err) { console.error("Yikes!", err); }

Promisify methods

const {promisify} = require("es6-promisify");

// Create a promise-based version of send_command const redis = require("redis").createClient(6379, "localhost"); const client = promisify(redis.send_command.bind(redis));

// Send commands to redis and get a promise back try { const pong = await; console.log("Got", pong); } catch (err) { console.error("Unexpected error", err); } finally { redis.quit(); }

Handle multiple callback arguments, with named parameters

const {promisify} = require("es6-promisify");

function test(cb) { return cb(undefined, 1, 2, 3); }

// Create promise-based version of test test[promisify.argumentNames] = ["one", "two", "three"]; const multi = promisify(test);

// Returns named arguments const result = await multi(); console.log(result); // {one: 1, two: 2, three: 3}

Provide your own Promise implementation

const {promisify} = require("es6-promisify");

// Now uses Bluebird promisify.Promise = require("bluebird");

const test = promisify(cb => cb(undefined, "test")); const result = await test(); console.log(result); // "test", resolved using Bluebird


Test with tape

$ npm test

Changes from v5.0.0

  • Allow developer to specify a different implementations of
  • No longer ships with a polyfill for
    . If your environment has no native
    you must polyfill yourself, or set
    to an A+ compatible
  • Removed support for
    : use
  • Removed support for
    : use named arguments instead.

Published under the MIT License.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.