The issue is that many modern DOM APIs assume js semantics and types (eg promises, iterables, etc) so you need to "reimplement" some js semanthic in wasm; sorta like how apple added a few custom instructions on the M1 chip specifically for the type of floating point operation required by js.