initEventListeners() {
        _.each(this.resourcesConfig, (resourceConfig) => {
            this.data[resourceConfig.type] = [];

            this._listenOn(resourceConfig.events.add, async (model) => {
                await this._onResourceAdded(resourceConfig.type, model);
            });

            if (_.isArray(resourceConfig.events.update)) {
                resourceConfig.events.update.forEach((event) => {
                    this._listenOn(event, async (model) => {
                        await this._onResourceUpdated(resourceConfig.type, model);
                    });
                });
            } else {
                this._listenOn(resourceConfig.events.update, async (model) => {
                    await this._onResourceUpdated(resourceConfig.type, model);
                });
            }

            this._listenOn(resourceConfig.events.remove, (model) => {
                this._onResourceRemoved(resourceConfig.type, model);
            });
        });
    }
@description Each resource type needs to register resource/model events to get notified
about updates/deletions/inserts.

For example for a "tag" resource type with following configuration:
 events: {
    add: 'tag.added',
    update: ['tag.edited', 'tag.attached', 'tag.detached'],
    remove: 'tag.deleted'
 }
there would be:
1 event listener connected to  "_onResourceAdded"   handler and it's 'tag.added' event
3 event listeners connected to "_onResourceUpdated" handler and it's 'tag.edited', 'tag.attached', 'tag.detached' events
1 event listener connected to  "_onResourceRemoved" handler and it's 'tag.deleted' event