async preloadInner_(assetUri, startTime, mimeType, standardLoad = false,
      config) {
    goog.asserts.assert(this.networkingEngine_, 'Should have a net engine!');
    goog.asserts.assert(this.config_, 'Config must not be null!');
    if (!mimeType) {
      mimeType = await this.guessMimeType_(assetUri);
    }
    const shouldUseSrcEquals = this.shouldUseSrcEquals_(assetUri, mimeType);
    if (shouldUseSrcEquals) {
      // We cannot preload src= content.
      return null;
    }
    const preloadConfig = config || this.config_;
    let disableVideo = false;
    let allowMakeAbrManager = true;
    if (standardLoad) {
      if (this.abrManager_ &&
          this.abrManagerFactory_ == preloadConfig.abrFactory) {
        // If there's already an abr manager, don't make a new abr manager at
        // all.
        // In standardLoad mode, the abr manager isn't used for anything anyway,
        // so it should only be created to create an abr manager for the player
        // to use... which is unnecessary if we already have one of the right
        // type.
        allowMakeAbrManager = false;
      }
      if (this.video_ && this.video_.nodeName === 'AUDIO') {
        disableVideo = true;
      }
    }
    let preloadManagerPromise = this.makePreloadManager_(
        assetUri, startTime, mimeType || null, preloadConfig,
        /* allowPrefetch= */ !standardLoad, disableVideo, allowMakeAbrManager);
    if (!standardLoad) {
      // We only need to track the PreloadManager if it is not part of a
      // standard load. If it is, the load() method will handle destroying it.
      // Adding a standard load PreloadManager to the createdPreloadManagers_
      // array runs the risk that the user will call destroyAllPreloads and
      // destroy that PreloadManager mid-load.
      preloadManagerPromise = preloadManagerPromise.then((preloadManager) => {
        this.createdPreloadManagers_.push(preloadManager);
        return preloadManager;
      });
    } else {
      preloadManagerPromise = preloadManagerPromise.then((preloadManager) => {
        preloadManager.markIsLoad();
        return preloadManager;
      });
    }
    return preloadManagerPromise;
  }
@param {string} assetUri
@param {?number|Date} startTime
@param {?string=} mimeType
@param {boolean=} standardLoad
@param {?shaka.extern.PlayerConfiguration=} config
@return {!Promise<?shaka.media.PreloadManager>}
@private