|  | 'use strict'; | 
|  |  | 
|  | Object.defineProperty(exports, "__esModule", { | 
|  | value: true | 
|  | }); | 
|  |  | 
|  | var _setImmediate = require('./internal/setImmediate'); | 
|  |  | 
|  | /** | 
|  | * Calls `callback` on a later loop around the event loop. In Node.js this just | 
|  | * calls `process.nextTick`.  In the browser it will use `setImmediate` if | 
|  | * available, otherwise `setTimeout(callback, 0)`, which means other higher | 
|  | * priority events may precede the execution of `callback`. | 
|  | * | 
|  | * This is used internally for browser-compatibility purposes. | 
|  | * | 
|  | * @name nextTick | 
|  | * @static | 
|  | * @memberOf module:Utils | 
|  | * @method | 
|  | * @see [async.setImmediate]{@link module:Utils.setImmediate} | 
|  | * @category Util | 
|  | * @param {Function} callback - The function to call on a later loop around | 
|  | * the event loop. Invoked with (args...). | 
|  | * @param {...*} args... - any number of additional arguments to pass to the | 
|  | * callback on the next tick. | 
|  | * @example | 
|  | * | 
|  | * var call_order = []; | 
|  | * async.nextTick(function() { | 
|  | *     call_order.push('two'); | 
|  | *     // call_order now equals ['one','two'] | 
|  | * }); | 
|  | * call_order.push('one'); | 
|  | * | 
|  | * async.setImmediate(function (a, b, c) { | 
|  | *     // a, b, and c equal 1, 2, and 3 | 
|  | * }, 1, 2, 3); | 
|  | */ | 
|  | var _defer; | 
|  |  | 
|  | if (_setImmediate.hasNextTick) { | 
|  | _defer = process.nextTick; | 
|  | } else if (_setImmediate.hasSetImmediate) { | 
|  | _defer = setImmediate; | 
|  | } else { | 
|  | _defer = _setImmediate.fallback; | 
|  | } | 
|  |  | 
|  | exports.default = (0, _setImmediate.wrap)(_defer); | 
|  | module.exports = exports['default']; |