aitMessage(msg) {
            return new Promise(res => {
                function waitAndRemove(e) {
                    if (e.data != msg)
                        return;
                    window.removeEventListener("message", waitAndRemove);
                    res();
                }
                window.addEventListener("message", waitAndRemove);
            });
        }

        const subframeLoaded = awaitMessage("subframe-loaded");

        async function createXHTMLCase(id) {
            awai