• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// META: global=window,worker
2'use strict';
3
4const error1 = new Error('error1');
5error1.name = 'error1';
6
7const error2 = new Error('error2');
8error2.name = 'error2';
9
10promise_test(t => {
11  const ws = new WritableStream({
12    start(controller) {
13      controller.error(error1);
14    }
15  });
16  return promise_rejects_exactly(t, error1, ws.getWriter().closed, 'stream should be errored');
17}, 'controller.error() should error the stream');
18
19test(() => {
20  let controller;
21  const ws = new WritableStream({
22    start(c) {
23      controller = c;
24    }
25  });
26  ws.abort();
27  controller.error(error1);
28}, 'controller.error() on erroring stream should not throw');
29
30promise_test(t => {
31  let controller;
32  const ws = new WritableStream({
33    start(c) {
34      controller = c;
35    }
36  });
37  controller.error(error1);
38  controller.error(error2);
39  return promise_rejects_exactly(t, error1, ws.getWriter().closed, 'first controller.error() should win');
40}, 'surplus calls to controller.error() should be a no-op');
41
42promise_test(() => {
43  let controller;
44  const ws = new WritableStream({
45    start(c) {
46      controller = c;
47    }
48  });
49  return ws.abort().then(() => {
50    controller.error(error1);
51  });
52}, 'controller.error() on errored stream should not throw');
53
54promise_test(() => {
55  let controller;
56  const ws = new WritableStream({
57    start(c) {
58      controller = c;
59    }
60  });
61  return ws.getWriter().close().then(() => {
62    controller.error(error1);
63  });
64}, 'controller.error() on closed stream should not throw');
65