promisify-impl

implementing the utility promisify method

by upigilam

JavaScript

/**
 * Node's Util.promisify
 */
function promisify(fn) {
    if (typeof fn !== 'function') {
        throw new TypeError('Argument must be a function');
    }

    return function promisifiedFn(...args) {
        return new Promise((resolve, reject) => {
            fn(...args, (err, results) => {
                if (err) {
                    reject(err);
                }

                resolve(results);
            });
        });
    };
}