Support for SharedArrayBuffer in SharedWorker?

I’m currently experimenting with running (multi-threaded) Emscripten/Wasm-Code in a SharedWorker. While this works reasonably well for single-threaded code (running Emscripten’s JS code and Wasm code all in a single SharedWorker instance), there’s challenges for multi-threaded code, requiring support for SharedArrayBuffer from within a SharedWorker.

Out of the box, I don’t get SharedWorkerGlobalScope to provide access to SharedArrayBuffer (even with the usual Cross-Origin-Opener-Policy: same-origin, Cross-Origin-Embedder-Policy: require-corp HTTP headers) at all. (Creating a WebAssembly.Memory with shared: true would nevertheless work, but then trying to send that WebAssembly.Memory to another Worker via postMessage would fail, throwing a terse Error: undefined.)

I found that nightly builds of Firefox allow setting om.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled, which would make things work nicely.

However, without that overriding flag, the code appears to not be meant to support SharedArrayBuffer in a SharedWorker, in any way: RemoteWorkerChild::ExecWorkerOnMainThread (in dom/workers/remoteworkers/RemoteWorkerChild.cpp) calls WorkerPrivate::Constructor (in dom/workers/WorkerPrivate.cpp), which calls WorkerPrivate::ComputeAgentClusterIdAndCoop, which for aWorkerKind == WorkerKind::WorkerKindShared will unconditionally return an nsILoadInfo::CrossOriginOpenerPolicy of nsILoadInfo::OPENER_POLICY_UNSAFE_NONE. Which means that a later call to WorkerPrivate::IsSharedMemoryAllowed will fall through to WorkerPrivate::CrossOriginIsolated, which will always return false as mAgentClusterOpenerPolicy is not nsILoadInfo::OPENER_POLICY_SAME_ORIGIN_EMBEDDER_POLICY_REQUIRE_CORP.

Am I out of luck here, or is there a way in which a SharedWorker would support SharedArrayBuffer (if not today, then at least in the planned future)?

(I now filed https://bugzilla.mozilla.org/show_bug.cgi?id=1984864 “SharedWorker does not provide SharedArrayBuffer”)