_loadEngineInstance({ name, instanceId, mountPoint }) {
    let enginePromises = this._enginePromises;

    if (!enginePromises[name]) {
      enginePromises[name] = Object.create(null);
    }

    let enginePromise = enginePromises[name][instanceId];

    // We already have a Promise for this engine instance
    if (enginePromise) {
      return enginePromise;
    }

    if (this._engineIsLoaded(name)) {
      // The Engine is loaded, but has no Promise
      enginePromise = RSVP.resolve();
    } else {
      // The Engine is not loaded and has no Promise
      enginePromise = this._assetLoader.loadBundle(name).then(
        () => this._registerEngine(name),
        (error) => {
          enginePromises[name][instanceId] = undefined;
          throw error;
        },
      );
    }

    return (enginePromises[name][instanceId] = enginePromise.then(() => {
      return this._constructEngineInstance({ name, instanceId, mountPoint });
    }));
  }
Loads an instance of an Engine with the specified name and instanceId.
Returns a Promise for both Eager and Lazy Engines. This function loads the
assets for any Lazy Engines.

@private
@method _loadEngineInstance
@param {Object} engineInfo
@param {String} engineInfo.name
@param {String} engineInfo.instanceId
@param {String} engineInfo.mountPoint
@return {Promise<EngineInstance>}