async startOperation_(action) {
    this.openOperations_.push(action);

    try {
      // Await |action| so we can use the finally statement to remove |action|
      // from |openOperations_| when we still have a reference to |action|.
      return await action;
    } finally {
      shaka.util.ArrayUtils.remove(this.openOperations_, action);
    }
  }
Perform an action. Track the action's progress so that when we destroy
we will wait until all the actions have completed before allowing destroy
to resolve.

@param {!Promise<T>} action
@return {!Promise<T>}
@template T
@private