     nil
   catch
     kind, error ->
-      {kind, error, System.stacktrace}
+      {kind, error, System.stacktrace()}
   end
 end

    end
  end

  @spec run(pid, timeout) :: :ok | {Exception.kind, term, Exception.stacktrace}
  def run(pid, timeout) when is_pid(pid) do
    [{^pid, sup, callbacks}] = :ets.take(@name, pid)
    error = terminate_supervisor(sup, timeout)

    receive do
      {^runner_pid, reason} ->
        {runner_pid, runner_monitor, error || reason}

      {:DOWN, ^runner_monitor, :process, ^runner_pid, reason} ->
        {nil, nil, error || {{:EXIT, runner_pid}, reason, []}}
    after
