async.js (599B)
1 var defer = require('./defer.js'); 2 3 // API 4 module.exports = async; 5 6 /** 7 * Runs provided callback asynchronously 8 * even if callback itself is not 9 * 10 * @param {function} callback - callback to invoke 11 * @returns {function} - augmented callback 12 */ 13 function async(callback) 14 { 15 var isAsync = false; 16 17 // check if async happened 18 defer(function() { isAsync = true; }); 19 20 return function async_callback(err, result) 21 { 22 if (isAsync) 23 { 24 callback(err, result); 25 } 26 else 27 { 28 defer(function nextTick_callback() 29 { 30 callback(err, result); 31 }); 32 } 33 }; 34 }