remoteAsyncCall_(targetName, methodName, ...varArgs) {
    goog.asserts.assert(targetName == 'video' || targetName == 'player',
        'Unexpected target name');

    const p = new shaka.util.PublicPromise();
    const id = this.nextAsyncCallId_.toString();
    this.nextAsyncCallId_++;
    this.asyncCallPromises_.set(id, p);

    try {
      this.sendMessage_({
        'type': 'asyncCall',
        'targetName': targetName,
        'methodName': methodName,
        'args': varArgs,
        'id': id,
      });
    } catch (error) {
      p.reject(error);
    }
    return p;
  }
@param {string} targetName
@param {string} methodName
@param {...*} varArgs
@return {!Promise}
@private