<script>

function log(msg) {
    document.getElementById("logger").innerHTML += msg + " -- ";
}

function startTest() {
    try {
        for (var i = 0; i < 101; ++i) {
            history.pushState(0, 0, i.toString());
            log("Successfully added item: " + i);
        }
    } catch(e) {
        log(e);
    }

    setTimeout(continueTest, 30050);
}

function continueTest() {
    alert(1);
    history.pushState(0, 0, "101");
    log("After 30+ second delay, successfully added the 101th item");

    try {
        for (var i = 0; i < 100; ++i) {
            history.replaceState(0, 0, i.toString());
            log("Successfully replaced with item: " + i);
        }
    } catch(e) {
        alert(2);
        log(e);
    }

    setTimeout(finishTest, 30050);
}

function finishTest() {
    alert(3);
    history.replaceState(0, 0, "100");
    log("After 30+ second delay, successfully replaced the 100th item");
}

</script>
This test will take over a minute to run.<br>
100 items should successfully push, and the 101th should fail.<br>
After 30+ seconds, 101th should successfully push.<br>
Then 99 items should successfully replace, with the 100th failing.<br>
After 30+ seconds, the 100th should successfully replace.<br>
<button onclick="startTest();">Click to start test</button>
<div id="logger"></div>