14:48
<nicolo-ribaudo>

JavaScript question. This code should log FAIL 1 in the first part, but is it true that the second part is host-defined?

await deleteFileIfExists("./mod.js");

try {
  await import("./mod.js");
  console.log("OK 1");
} catch {
  console.log("FAIL 1");
}

await createFile("./mod.js", "export const x = 1");

try {
  await import("./mod.js");
  console.log("OK 2");
} catch {
  console.log("FAIL 2");
}
14:50
<nicolo-ribaudo>
(node logs OK 2, Deno and Firefox log FAIL 2)
14:50
<Kris Kowal>
In my opinion, the promises returned by import should be memoized, but I do not know where the spec stands.
14:51
<Kris Kowal>
At least, the eventual settlements should be memoized.
14:51
<Ashley Claymore>
yeah, so fresh promise. consistent settle? To avoid global mutable state
14:52
<Kris Kowal>
That would be satisfactory in my opinion, but I do not know where the spec stands.
14:55
<Ashley Claymore>

do Node, Deno and Firefox module systems support query params as a way to force a fresh module?

import(`./mod.js?n=${i++}`);
14:56
<guybedford>
This behaviour was allowed to be host-defined in https://github.com/tc39/ecma262/pull/1645 I believe.
14:57
<guybedford>
HTML had plans to add support for enabling these sorts of retries, but as far as I know it hasn't been implemented in any browser
14:57
<nicolo-ribaudo>
Oh thank you!
15:28
<nicolo-ribaudo>
Yes, they all consider them as different modules
15:37
<Kris Kowal>
From a compartment-as-module-loader perspective, this would necessarily be host-defined, since the resolveHook produces the memo-key and would be in a position to either keep or truncate the query and hash.