| 'use strict'; | |
| 
 | |
| if (typeof process === 'undefined' || | |
|     !process.version || | |
|     process.version.indexOf('v0.') === 0 || | |
|     process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { | |
|   module.exports = { nextTick: nextTick }; | |
| } else { | |
|   module.exports = process | |
| } | |
| 
 | |
| function nextTick(fn, arg1, arg2, arg3) { | |
|   if (typeof fn !== 'function') { | |
|     throw new TypeError('"callback" argument must be a function'); | |
|   } | |
|   var len = arguments.length; | |
|   var args, i; | |
|   switch (len) { | |
|   case 0: | |
|   case 1: | |
|     return process.nextTick(fn); | |
|   case 2: | |
|     return process.nextTick(function afterTickOne() { | |
|       fn.call(null, arg1); | |
|     }); | |
|   case 3: | |
|     return process.nextTick(function afterTickTwo() { | |
|       fn.call(null, arg1, arg2); | |
|     }); | |
|   case 4: | |
|     return process.nextTick(function afterTickThree() { | |
|       fn.call(null, arg1, arg2, arg3); | |
|     }); | |
|   default: | |
|     args = new Array(len - 1); | |
|     i = 0; | |
|     while (i < args.length) { | |
|       args[i++] = arguments[i]; | |
|     } | |
|     return process.nextTick(function afterTick() { | |
|       fn.apply(null, args); | |
|     }); | |
|   } | |
| } | |
| 
 |