Workers can be blocked using Atomics on a SharedArrayBuffer and the screen buffer can be sent using OffscreenCanvas, therefore it is theoretically possible to load zozlib.js in a worker, block calls and send the screen to the main thread. This does come with an overhead and some complexity. I think this is worth investigating though, as it would be a rather niche (as far as I can tell from a Google search) approach to handling Async in web assembly.