"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 (event) {
      if (event.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");
  });
};