findAll (name, query, opts) {
    opts || (opts = {})
    const mapper = this.getMapper(name)
    const hash = this.hashQuery(name, query, opts)
    const pendingQuery = this._pendingQueries[name][hash]
    const usePendingFindAll = opts.usePendingFindAll === undefined ? this.usePendingFindAll : opts.usePendingFindAll
    utils._(opts, mapper)

    if (pendingQuery && (utils.isFunction(usePendingFindAll) ? usePendingFindAll.call(this, name, query, opts) : usePendingFindAll)) {
      return pendingQuery
    }

    const items = this.cachedFindAll(name, hash, opts)

    if (opts.force || !items) {
      const promise = this._pendingQueries[name][hash] = Container.prototype.findAll.call(this, name, query, opts)
      return promise
        .then((result) => {
          delete this._pendingQueries[name][hash]
          result = this._end(name, result, opts)
          this.cacheFindAll(name, result, hash, opts)
          return result
        }, (err) => {
          delete this._pendingQueries[name][hash]
          return utils.reject(err)
        })
    }

    return utils.resolve(items)
  }
Wrapper for {@link Mapper#findAll}. Adds any found records to the store.

@example
import { SimpleStore } from 'js-data';
import { HttpAdapter } from 'js-data-http';

const store = new SimpleStore();
store.registerAdapter('http', new HttpAdapter(), { default: true });

store.defineMapper('movie');

// Since this example uses the http adapter, we'll get something like:
//
//   GET /movie?rating=PG
store.find('movie', { rating: 'PG' }).then((movies) => {
  // The movie records are now in the in-memory store
  console.log(store.filter('movie'));
});

@fires SimpleStore#beforeFindAll
@fires SimpleStore#afterFindAll
@fires SimpleStore#add
@method SimpleStore#findAll
@param {string} name Name of the {@link Mapper} to target.
@param {object} [query] Passed to {@link Mapper.findAll}.
@param {object} [opts] Passed to {@link Mapper.findAll}.
@param {boolean} [opts.force] Bypass cacheFindAll
@param {boolean|Function} [opts.usePendingFindAll] See {@link SimpleStore#usePendingFindAll}
@returns {Promise} Resolves with the result, if any.
@since 3.0.0