callbackify

backwards compatibilify your callback functions while migrating apis to promises

callbackify

backwards compatibilify your callback functions while migrating apis to promises

var callbackify = require('callbackify')
 
var getUserById = callbackify(function (id) {
  // in this example, we're using [minq](https://npm.im/minq) 
  return db.users.byId(id).first()
})
 
// later in your code, we can use a callback 
 
getUserById(23, function (erruser) {
  if (err) { /* give up */ return }
  console.log('hello, ', user.name)
})
 
// but for newer code, we can consume it as a promise 
 
getUserById(23).then(function (user) {
  console.log('hello, ', user.name)
}, function (err) {
  console.error(err)
})
 

callbackify will also preserve the this context of your functions:

getUserById.call({foo:true}, 12)
// the underlying promise-returning function is called with the supplied context argument 

Note, callbackify only works on fixed-parameter length functions, not variadic functions. It determines whether or not you're passing in a continuation callback by counting parameters. If you can think of a more clever way, please send a PR!

Takes a Promise-returning function fn and returns a new function which can return a Promise or take a callback as the last parameter. If a callback is supplied, the function returns void. If no callback is supplied, the promise is returned.

$ npm install callbackify

From package root:

$ npm install
$ npm test

MIT. (c) MMXIII jden jason@denizac.org. See LICENSE.md