export class Supervisor { #subscriberI: number = 0 #subscribers: Record void> = {} constructor() { } notify() { for (let i in this.#subscribers) { this.#subscribers[i](); } } onNotify(cb: () => void) { let i = this.#subscriberI++; this.#subscribers[i] = cb; return i; } removeOnNotify(handle: number) { delete this.#subscribers[handle] } }