constructor() {
        this.listeners = [];
    }
Signal represents a collection of observers that can be notified with
parameterized event dispatch. Listeners can tap into a signal to
receive callbacks when a signal is raised.