remove (type, startTime, endTime, context) {
    // if (Object.keys(this._sourceBuffer).length === 1) return Promise.resolve()
    let isInsertHead = false
    if (this._mseFullFlag[type]) {
      isInsertHead = true
    }
    return this._enqueueOp(type, () => {
      if (!this.mediaSource || this.media.error) return
      const sb = this._sourceBuffer[type]
      if (startTime >= endTime || !sb) {
        this._onSBUpdateEnd(type)
        return
      }
      this._opst = nowTime()
      this._logger.debug('MSE REMOVE START', type, startTime, endTime, context)
      sb.remove(startTime, endTime)
    }, OP_NAME.REMOVE, context, isInsertHead)
  }
@param { string } type
@param { number } startTime
@param { number } endTime
@return { Promise }