export type RuntimeDisposer = () => unknown | Promise; // Release in reverse acquisition order; one failed cleanup must not skip the room. export async function disposeRuntime(disposers: RuntimeDisposer[]): Promise { for (const dispose of [...disposers].reverse()) { try { await dispose(); } catch (error) { console.warn(error); } } }