const promiseToCallback = require('promise-to-callback') const noop = function () {} module.exports = function nodeify (fn, context) { return function () { const args = [].slice.call(arguments) const lastArg = args[args.length - 1] const lastArgIsCallback = typeof lastArg === 'function' let callback if (lastArgIsCallback) { callback = lastArg args.pop() } else { callback = noop } promiseToCallback(fn.apply(context, args))(callback) } }