chromium/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/basic.any.js

// META: global=window,dedicatedworker,sharedworker
// META: script=ticker.js

promise_test(async t => {
  const getCount = ticker(1000);

  const importP = import("<invalid>");
  await promise_rejects_js(t, TypeError, importP, 'import() should reject');

  assert_less_than(getCount(), 1000);
}, "import() should not drain the microtask queue if it fails during specifier resolution");

promise_test(async t => {
  // Use Date.now() to ensure that the module is not in the module map
  const specifier = "./empty-module.js?" + Date.now();

  await import(specifier);

  const getCount = ticker(1000);
  await import(specifier);
  assert_less_than(getCount(), 1000);
}, "import() should not drain the microtask queue when loading an already loaded module");

promise_test(async t => {
  // Use Date.now() to ensure that the module is not in the module map
  const specifier = "./empty-module.js?" + Date.now();

  const getCount = ticker(1e6);
  await import(specifier);
  assert_equals(getCount(), 1e6);
}, "import() should drain the microtask queue when fetching a new module");