cleanupRunShot () {
    if (!this.hasActiveRunner) return
    this.runner = null

    if (Array.isArray(this.commands) && this.commands.length === 0) {
      this.onCompletion()
    }

    // TODO: Do we undo again (autoplay situation???)
    if (this.mode === FORWARD_MODE) {
      this.undoCommands.endPlayingShot()
    }

    if (this.systems.autoplay.autoplay && this.mode === UNDO_MODE) {
      this.systems.autoplay.autoplay = false
      return this.undoShot()
    }

    if (this.systems.autoplay.autoplay) {
      this.systems.autoplay.autoplay = false
      return this.runShot(true)
    }

    this.undoCommands.tryMarkFirstStoppingPoint()

    if (this.wasCancelled) {
      this.wasCancelled = false
      return this.runShot(false)
    }

    this.onPause()
  }
cleanupRun disposes of the runner and calls the `onPause` callback
to signal that we're not running a shot.
If the entire cinematic has completed we call the `onCompletion`.