Home Reference Source

node-user-accounts-boilerplate-nahid/helper/callback.js

"use strict";

/**
 * Calls a callback caller that calls a callback call for async instead of using promises.
 * 
 * @param {Function} fn function to call
 * @param [args] arguments to call function with
 * @return {Promise} It returns a promise which resolves on callback call.
 */
function callback(fn, ...args)
{
  return new Promise(function (resolve, reject)
  {
    function handler(err, result)
    {
      if (err)
      {
        reject(new Error(err));
      }
      else
      {
        resolve(result);
      }
    }
    args.push(handler);
    fn(...args);
  });
}

module.exports = callback;