redo() {
    if (!this.canRedo()) {
      throw new Error('there are no registered redos');
    }
    const data = this._redos.pop();
    const target = data.target;
    const selector = data.selector;
    const args = data.args;
    this._isRedoing = true;
    target[selector].apply(target, args);
    this._isRedoing = false;
  }
Performs the top-most redo action on the stack.

@throws {Error} Raises an error if there are no available redo actions.