summaryrefslogtreecommitdiffstats
path: root/dom/workers/test/WorkerDebugger_promise_worker.js
blob: 4b1042e80b4d5c25f7c0458116c4c89592fc3d01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"use strict";

self.onmessage = function (event) {
  if (event.data !== "resolve") {
    return;
  }
  // This then-handler should be executed inside the top-level event loop,
  // within the context of the worker's global.
  Promise.resolve().then(function () {
    self.onmessage = function (e) {
      if (e.data !== "pause") {
        return;
      }
      // This then-handler should be executed inside the top-level event loop,
      // within the context of the worker's global. Because the debugger
      // statement here below enters a nested event loop, the then-handler
      // should not be executed until the debugger statement returns.
      Promise.resolve().then(function () {
        postMessage("resumed");
      });
      debugger;
    };
    postMessage("resolved");
  });
};