| 12345678910111213141516171819202122232425262728293031 | 
							- 'use strict';
 
- var global = require('../internals/global');
 
- var apply = require('../internals/function-apply');
 
- var isCallable = require('../internals/is-callable');
 
- var ENGINE_IS_BUN = require('../internals/engine-is-bun');
 
- var USER_AGENT = require('../internals/engine-user-agent');
 
- var arraySlice = require('../internals/array-slice');
 
- var validateArgumentsLength = require('../internals/validate-arguments-length');
 
- var Function = global.Function;
 
- // dirty IE9- and Bun 0.3.0- checks
 
- var WRAP = /MSIE .\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () {
 
-   var version = global.Bun.version.split('.');
 
-   return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');
 
- })();
 
- // IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix
 
- // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers
 
- // https://github.com/oven-sh/bun/issues/1633
 
- module.exports = function (scheduler, hasTimeArg) {
 
-   var firstParamIndex = hasTimeArg ? 2 : 1;
 
-   return WRAP ? function (handler, timeout /* , ...arguments */) {
 
-     var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;
 
-     var fn = isCallable(handler) ? handler : Function(handler);
 
-     var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];
 
-     var callback = boundArgs ? function () {
 
-       apply(fn, this, params);
 
-     } : fn;
 
-     return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);
 
-   } : scheduler;
 
- };
 
 
  |