promiseback

Accept an optional node-style callback, and also return a spec-compliant Promise!

Usage no npm install needed!

<script type="module">
  import promiseback from 'https://cdn.skypack.dev/promiseback';
</script>

README

promiseback Version Badge

Build Status dependency status dev dependency status

npm badge

browser support

Accept an optional node-style callback, and also return a spec-compliant Promise!

API

var promiseback = require('promiseback');
var callback = function (err, value) {};

/* without a promise: */
promiseback(callback);
    /*
        - will throw if `callback` is not a function
        - returns a "deferred"
        - has resolve/reject methods, and `promise` property
        - will call `callback` as expected when deferred is resolved
    */

/* with a promise: */
promiseback(promise, callback);
    /*
        - will throw if `callback` is truthy and not a function
        - `promise` will be converted to a Promise, so you can pass a value as well
        - returns a Promise
        - will call `callback` as expected when the promise is fulfilled
    */

Examples

Using deferreds:

var promiseback = require('promiseback');

module.exports = function doSomethingCool(thing, callback) {
    // If callback is not provided, this code will simply return a normal promise.
    // If callback is provided but is not a function, promiseback will immediately throw a TypeError.

    // "deferred" is an object with `reject/resolve` methods, and a `promise` property.
    var deferred = promiseback(callback);
    if (thing) {
        deferred.resolve(thing);
    } else {
        deferred.reject(thing);
    }
    return deferred.promise;
};

Using a straight promise, when you can get it from somewhere else:

var promiseback = require('promiseback');

module.exports = function doSomethingCool(thing, callback) {
    // If callback is not provided, this code will simply return a normal promise.
    // If callback is provided but is not a function, promiseback will immediately throw a TypeError.

    var newThingPromise = makeNewThing(thing);
    return promiseback(newThingPromise, callback);
};

Tests

Simply clone the repo, npm install, and run npm test