'use strict'; require('../common'); const assert = require('assert'); function range(n) { return 'x'.repeat(n + 1).split('').map(function(_, i) { return i; }); } function timeout(nargs) { const args = range(nargs); setTimeout.apply(null, [callback, 1].concat(args)); function callback() { assert.deepStrictEqual([].slice.call(arguments), args); if (nargs < 128) timeout(nargs + 1); } } function interval(nargs) { const args = range(nargs); const timer = setTimeout.apply(null, [callback, 1].concat(args)); function callback() { clearInterval(timer); assert.deepStrictEqual([].slice.call(arguments), args); if (nargs < 128) interval(nargs + 1); } } timeout(0); interval(0);