<!doctype html>
<meta charset=utf-8>
<title>XMLHttpRequest: The send() method: Fire an event named load (synchronous flag is unset)</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-onload" data-tested-assertations="../.." />
<link rel="help" href="https://xhr.spec.whatwg.org/#event-xhr-load" data-tested-assertations="../.." />
<div id="log"></div>

<script>
  var test = async_test();
  test.step(function() {
    var client = new XMLHttpRequest();
    client.onload = test.step_func(function(e) {
      assert_true(e instanceof ProgressEvent);
      assert_equals(e.type, "load");
      assert_equals(client.readyState, 4);
      test.done();
    });
    client.onreadystatechange = test.step_func(function() {
      if (client.readyState !== 4) return;

      test.step_timeout(() => {
          assert_unreached("Didn't get load event within 4ms of readystatechange==4");
      }, 4);
    });
    client.open("GET", "resources/well-formed.xml");
    client.send(null);
  });
</script>
