<!DOCTYPE html>
<title>Handling of different types of errors</title>

<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
    setup({allow_uncaught_exception: true});

    window.log = [];

    window.addEventListener("error", ev => log.push(ev.error));

    const test_load = async_test(
        "network error has higher priority than parse error");
    window.addEventListener("load", test_load.step_func_done(ev => {
      assert_equals(log.length, 3);

      // A parse error is reported for the first top-level
      // <script> element for syntaxerror.js.
      assert_equals(log[0].constructor, SyntaxError);
      assert_equals(log[1], 1);

      // onerror is called (with no errors reported) due to a network error
      // for the second top-level <script>.
      assert_equals(log[2], 2);
    }));

    function unreachable() { log.push("unexpected"); }
</script>
<script type="module" src="./syntaxerror.js"
    onerror="unreachable()" onload="log.push(1)"></script>
<script type="module" src="./error-type-1.js"
    onerror="log.push(2)" onload="unreachable()"></script>
