index.js
555 Bytes
'use strict';
var once = require('once');
/**
* Run a function asynchronously or synchronously
* @param {Function} func Function to run
* @param {Function} cb Callback function passed the `func` returned value
* @...rest {Mixed} rest Arguments to pass to `func`
* @return {Null}
*/
module.exports = function (func, cb) {
var async = false;
var answer = func.apply({
async: function () {
async = true;
return once(cb);
}
}, Array.prototype.slice.call(arguments, 2) );
if (!async) {
cb(answer);
}
};