'use strict'; const _ = require('lodash'); /** * For some reason, Promise.promisifyAll does not work on npm.commands :( * Promise.promisifyAll(npm.commands); * So we have to do it manually. */ function rawPromisify(obj) { _.each(obj, (method, name) => { obj[`${name}Async`] = () => { const args = [].slice.call(arguments); const that = this; return new Promise((resolve, reject) => { args.push((err, results) => { if (err) { reject(err); } else { resolve(results); } }); return method.apply(that, args); }); }; }); } module.exports = rawPromisify;