| 12345678910111213141516171819202122232425262728293031323334 | var defer = require('./defer.js');// APImodule.exports = async;/** * Runs provided callback asynchronously * even if callback itself is not * * @param   {function} callback - callback to invoke * @returns {function} - augmented callback */function async(callback){  var isAsync = false;  // check if async happened  defer(function() { isAsync = true; });  return function async_callback(err, result)  {    if (isAsync)    {      callback(err, result);    }    else    {      defer(function nextTick_callback()      {        callback(err, result);      });    }  };}
 |