UNPKG

599 BJavaScriptView Raw
1var defer = require('./defer.js');
2
3// API
4module.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 */
13function 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}