code: function runAsync( func, cb ) {
    var rest = [];
    var len = 1;
  
    while ( len++ < arguments.length ) {
      rest.push( arguments[len] );
    }
  
    var async = false;
    var returnValue = func.apply({
      async: function() {
        async = true;
        return _.once(cb);
      }
    }, rest );
  
    // Note: Call the callback synchronously to keep the sync flow by default
    if ( !async ) {
      cb(returnValue);
    }
  }
docs: Allow a function to be run async by using `this.async()`. If not, then the function is
  runned synchronously.
  @param  {Function} func  The function to run
  @param  {Function} cb    Callback to be provided even if the function is run sync
  @param  {...rest}        Arguments passed to `func`
  @return {null}