promiseback

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

promiseback

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

var promiseback = require('promiseback');
var callback = function (errvalue) {};
 
/* 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
*/

Using deferreds:

var promiseback = require('promiseback');
 
module.exports = function doSomethingCool(thingcallback) {
// 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(thingcallback) {
// 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);
};

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