<!DOCTYPE HTML>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<script>
description('Test Promise operation does not crash with stack-overflow.');

var count = 0;
function checkCount(passed)
{
    count++;
    if (passed === count) {
        fetch("./promise-stack-overflow.html");
        return;
    }
    checkCount(passed);
}
try {
    checkCount(0);
} catch {
}
count = 0;
try {
    checkCount(0);
} catch {
}
var stackOverflowHappens = false;
var stackOverflowDoesNotHappen = false;
var target = count;
for (var i = -100; i < 100; ++i) {
    try {
        count = 0;
        checkCount(target - i);
        stackOverflowDoesNotHappen = true;
    } catch {
        stackOverflowHappens = true;
    }
}
shouldBeTrue('stackOverflowHappens');
shouldBeTrue('stackOverflowDoesNotHappen');
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
