That article probably should have mentioned the existing code built into wasm-bindgen that allows cross-language async/await between Rust and JS.
True, I've considered describing that feature too, but in the end decided it would be too much deviation for the article that is already fairly large. That integration is very interesting on its own, but solves slightly different set of problems - that is, it can' t be used for bridging regular synchronous APIs like WASI in back-compat manner, but rather requires your entire stack to be built on top of async APIs.
If it is, that's indeed an even better solution, but most likely at least majority of your dependencies just use regular std:: APIs that are sync-only.
Describing those tradeoffs and doing meaningful comparison of two approaches feels like a whole separate blog post :)