let messageHandlersCalled = 0;
let errorHandlersCalled = 0;

onmessage = function (e) {
  if (e.data === "boom") {
    throw new Error("boom error!");
  }
  messageHandlersCalled++;
};

self.addEventListener("message", (_e) => {
  messageHandlersCalled++;
});

self.addEventListener("message", (_e) => {
  messageHandlersCalled++;
});

self.addEventListener("message", (_e) => {
  messageHandlersCalled++;

  postMessage({
    messageHandlersCalled,
    errorHandlersCalled,
  });
});

onerror = function (_e) {
  errorHandlersCalled++;
};

self.addEventListener("error", (_e) => {
  errorHandlersCalled++;
});

self.addEventListener("error", (_e) => {
  errorHandlersCalled++;
});

self.addEventListener("error", (e) => {
  errorHandlersCalled++;
  e.preventDefault();
});