JSFiddle - React, Tailwind, and code Playground

HTML

<button id="stop">Stop</button>Argument length limit: <span id="result">&hellip;</span>

JavaScript

// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply#Using_apply_and_built-in_functions
// https://bugs.webkit.org/show_bug.cgi?id=80797

var argsLength = 1,
    argsMin = 1,
    argsMax,
    interval,
    span = document.getElementById('result');

function fn() {
    return arguments;
}

function stopLoop() {
    clearInterval(interval);
}

// IE8- stub
if (!window.console) {
    window.console = {
        log: function () {}
    };
}

function reportError(e) {
    console.log('Error on arguments length ' + argsLength + ': ' + e.message);
    console.log(e);
}

function check(argsLength) {
    var args = [];
    args[argsLength - 1] = argsLength;
    var result = fn.apply(null, args);
    console.log('Result', args.length, result.length);
}

function loop() {
    console.log('Try', argsMin, argsLength, argsMax);
    try {
        check(argsLength);
        argsMin = argsLength;
    } catch (e) {
        argsMax = argsLength;
        reportError(e);
    }

    span.innerHTML = argsMin + '..' + argsMax;
    argsLength = argsMax ? ((argsMin + argsMax) / 2) : (argsMin * 2);

    if (argsMax && argsMax - argsMin < 2) {
        span.innerHTML = argsMin + '';
        stopLoop();
    }
}

document.getElementById('stop').onclick = stopLoop;
interval = setInterval(loop, 100);