lib/async.js
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);
      });
    }
  };
}
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);
      });
    }
  };
}
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 ) ; } ) ; } } ; }
Runs provided callback asynchronously
even if callback itself is not

@param   {function} callback - callback to invoke
@returns {function} - augmented callback
Runs provided callback asynchronously even if callback itself is not