EventEmitter на JavaScript

Реализовал простенький EventEmitter через классы, однако почему-то реализация методов off и once не проходят автотесты. Подскажите, в чем может быть проблема?

    class EventEmitter {
    constructor() {
        this.events = {};
    }

    on(eventName, callback) {
        this.events[eventName] = this.events[eventName] || [];
        this.events[eventName].push(callback);
        return this;
    }

    off(eventName, callback) {
        let event = this.events[eventName];
        if (!event) return this;
        for (let i = event.length; i > 0; i--) {
            if (event[i] === callback) {
                event.splice(i, 1);
                break;
            }
        }
        return this;
    }

    once(eventName, callback) {
        this.events[eventName] = this.events[eventName] || [];
        const onceEvent = () => {
            callback();
            this.off(eventName, onceEvent);
        }
        this.events[eventName].push(onceEvent);
        return this;
    }

    emit(eventName, ...args) {
        let fns = this.events[eventName];
        if (!fns) return false;
        fns.forEach((fn) => {
          fn.call(null, args);
        });
        return true;
    }
}

Также необходимо расширить класс EventEmitter классом BroadcastEventEmitter так, чтобы была возможность вызвать все обработчики всех событий.

emit("*", [...arg])

Ответы (1 шт):

Автор решения: space boy

Как минимум стоит реализовать метод off по аналогии с on

off(eventName, callback) {
        if (!this.events[eventName]) return 'no'
        delete this.events[eventName];
        return this.events;
    }
→ Ссылка