       is_integer(args) ->
         format_undef(mod, fun, args, undef, stacktrace)
       true ->
-        Exception.format_exit(reason)
+        format_stop_banner(undef)
     end
   end
 
-  defp format_otp_exit(reason) do
-    Exception.format_exit(reason)
+  defp format_stop_banner(reason, stacktrace) do
+    if Exception.exception?(reason) do
+        Exception.format_banner(:error, reason, stacktrace)
+    else
+      case Exception.normalize(:error, reason, stacktrace) do
+        %ErlangError{} ->
+          format_stop_banner(reason)
+        exception ->
+          Exception.format_banner(:error, exception, stacktrace)
+      end
+    end
   end
 
   defp format_undef(mod, fun, arity, undef, stacktrace) do
     opts = [module: mod, function: fun, arity: arity, reason: undef]
     exception = UndefinedFunctionError.exception(opts)
-    Exception.format_exit({exception, stacktrace})
+    Exception.format_banner(:error, exception, stacktrace)
   end
 end

          msg = msg <> "Last message: #{inspect last}\n"
                    <> "State: #{inspect state}\n"
        end
        {:ok, msg <> "** (exit) " <> format_otp_exit(reason)}

      {'** gen_event handler ' ++ _, [name, manager, last, state, reason]} ->
        msg = "GenEvent handler #{inspect name} installed in #{inspect manager} terminating\n"

          msg = msg <> "Last message: #{inspect last}\n"
                    <> "State: #{inspect state}\n"
        end
        {:ok, [msg | format_stop(reason)]}

      {'** Task ' ++ _, [name, starter, function, args, reason]} ->
        msg = "Task #{inspect name} started from #{inspect starter} terminating\n" <>
              "Function: #{inspect function}\n" <>
              "    Args: #{inspect args}\n"
        {:ok, [msg | format_stop(reason)]}

      _ ->
        :none
