constructor(promise, onAbort) {
    /** @const {!Promise<T>} */
    this.promise = promise;

    /** @private {function():!Promise} */
    this.onAbort_ = onAbort;

    /** @private {?Promise} */
    this.abortPromise_ = null;
  }
@param {!Promise<T>} promise
  A Promise which represents the underlying operation.  It is resolved when
  the operation is complete, and rejected if the operation fails or is
  aborted.  Aborted operations should be rejected with a shaka.util.Error
  object using the error code OPERATION_ABORTED.
@param {function():!Promise} onAbort
  Will be called by this object to abort the underlying operation.
  This is not cancellation, and will not necessarily result in any work
  being undone.  abort() should return a Promise which is resolved when the
  underlying operation has been aborted.  The returned Promise should never
  be rejected.