Initial commit
[yaffs-website] / node_modules / asynckit / lib / async.js
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 }