async init({urlCache} = {}) {
        let persistedUrls;
        let persistedResources;

        if (this.cache && (labs.isSet('urlCache') || urlCache)) {
            persistedUrls = await this.cache.read('urls');
            persistedResources = await this.cache.read('resources');
        }

        if (persistedUrls && persistedResources) {
            this.urls.urls = persistedUrls;
            this.resources.data = persistedResources;
            this.resources.initEventListeners();

            this._onQueueEnded('init');
        } else {
            this.resources.initEventListeners();
            await this.resources.fetchResources();
            // CASE: all resources are fetched, start the queue
            this.queue.start({
                event: 'init',
                tolerance: 100,
                requiredSubscriberCount: 1
            });
        }
    }
@description Initializes components needed for the URL Service to function
@param {Object} options
@param {Boolean} [options.urlCache] - whether to init using url cache or not