prefetchInitSegment(initSegmentReference) {
    goog.asserts.assert(this.prefetchLimit_ > 0,
        'SegmentPrefetch can not be used when prefetchLimit <= 0.');

    const logPrefix = shaka.media.SegmentPrefetch.logPrefix_(this.stream_);
    if (!this.stream_.segmentIndex) {
      shaka.log.debug(logPrefix, 'missing segmentIndex');
      return Promise.resolve();
    }

    if (initSegmentReference.getSegmentData()) {
      return Promise.resolve();
    }

    // init segments are ignored from the prefetch limit
    const initSegments = Array.from(this.initSegmentPrefetchMap_.keys());
    const someReference = initSegments.some((reference) => {
      return shaka.media.InitSegmentReference.equal(
          reference, initSegmentReference);
    });
    if (someReference) {
      return Promise.resolve();
    }
    const segmentPrefetchOperation = new shaka.media.SegmentPrefetchOperation(
        this.fetchDispatcher_);
    const promise = segmentPrefetchOperation.dispatchFetch(
        initSegmentReference, this.stream_);
    this.initSegmentPrefetchMap_.set(
        initSegmentReference, segmentPrefetchOperation);
    return promise;
  }
Fetch init segment.

@param {!shaka.media.InitSegmentReference} initSegmentReference
@return {!Promise}