var defer = require('./defer.js');12// API3module.exports = async;45/**6* Runs provided callback asynchronously7* even if callback itself is not8*9* @param {function} callback - callback to invoke10* @returns {function} - augmented callback11*/12function async(callback)13{14var isAsync = false;1516// check if async happened17defer(function() { isAsync = true; });1819return function async_callback(err, result)20{21if (isAsync)22{23callback(err, result);24}25else26{27defer(function nextTick_callback()28{29callback(err, result);30});31}32};33}343536