var p = new Promise(function(resolve, reject) {
  // This causes a runnable to be queued.
  reject(new Error());
  postMessage("loaded");

  // This prevents that runnable from running until the window calls terminate(),
  // at which point the worker goes into the Canceling state and then an
  // HoldWorker() is attempted, which fails, which used to result in
  // multiple calls to the error reporter, one after the worker's context had
  // been GCed.
  while (true);
});