async _fetch(resourceConfig, options = {offset: 0, limit: 999}) {
        debug('_fetch', resourceConfig.type, resourceConfig.modelOptions);

        let modelOptions = _.cloneDeep(resourceConfig.modelOptions);
        const isSQLite = config.get('database:client') === 'sqlite3';

        // CASE: prevent "too many SQL variables" error on SQLite3 (https://github.com/TryGhost/Ghost/issues/5810)
        if (isSQLite) {
            modelOptions.offset = options.offset;
            modelOptions.limit = options.limit;
        }

        const now = Date.now();
        const objects = await models.Base.Model.raw_knex.fetchAll(modelOptions);
        debug('_fetch.fetched', resourceConfig.type, objects.length, `${Date.now() - now}ms`);

        for (const object of objects) {
            this.data[resourceConfig.type].push(new Resource(resourceConfig.type, object));
        }

        if (objects.length && isSQLite) {
            options.offset = options.offset + options.limit;
            return this._fetch(resourceConfig, {offset: options.offset, limit: options.limit});
        }

        return objects;
    }
@description The actual call to the model layer, which will execute raw knex queries to ensure performance.
@param {Object} resourceConfig
@param {Object} options
@returns {Promise}
@private