         case Process.info(runner_pid, :current_stacktrace) do
           {:current_stacktrace, stacktrace} ->
             Process.exit(runner_pid, :kill)
+
             receive do
               {:DOWN, ^runner_monitor, :process, ^runner_pid, _} -> :ok
             end
+
             exception = ExUnit.TimeoutError.exception(timeout: timeout, type: "on_exit callback")
             {nil, nil, error || {:error, exception, stacktrace}}
+
           nil ->
             receive_runner_reply(runner_pid, runner_monitor, error, timeout)
         end

  @name __MODULE__
  @supervisor 2
  @on_exit 3

  use Agent

  @spec start_link(keyword()) :: {:ok, pid}
  def start_link(_opts) do
    Agent.start_link(fn ->
      :ets.new(@name, [:public, :named_table, read_concurrency: true, write_concurrency: true])
    end, name: @name)
  end

  @spec register(pid) :: :ok


    if is_pid(runner_pid) and Process.alive?(runner_pid) do
      Process.exit(runner_pid, :shutdown)

      receive do
        {:DOWN, ^runner_monitor, :process, ^runner_pid, _error} -> :ok
      end
