<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Response: error static method</title>
    <meta name="help" href="https://fetch.spec.whatwg.org/#response">
    <meta name="help" href="https://fetch.spec.whatwg.org/#concept-network-error">
    <meta name="author" title="Canon Research France" href="https://www.crf.canon.fr">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>
  <body>
    <script>
      test(function() {
        var responseError = Response.error();
        assert_equals(responseError.type, "error", "Network error response's type is error");
        assert_equals(responseError.status, 0, "Network error response's status is 0");
        assert_equals(responseError.statusText, "", "Network error response's statusText is empty");
        assert_equals(responseError.body, null, "Network error response's body is null");

        assert_true(responseError.headers.entries().next().done, "Headers should be empty");
      }, "Check response returned by static method error()");
    </script>
  </body>
</html>
