diff --git a/test/script-support.lisp b/test/script-support.lisp
index 4409f3dea137abaafbe138b6ccde12aaff34ac89..e4104481d3cd080b305d64f6f3c259ffb128ef74 100644
--- a/test/script-support.lisp
+++ b/test/script-support.lisp
@@ -373,23 +373,20 @@ is bound, write a message and exit on an error.  If
 *asdf-test-debug* is true, enter the debugger."
   (redirect-outputs)
   (let ((result
-          (catch :asdf-test-done
-            (handler-bind
-                ((error (lambda (c)
-                          (ignore-errors
-                           (format *error-output* "~&TEST ABORTED: ~A~&" c))
-                          (finish-outputs*)
-                          (cond
-                            (*debug-asdf*
-                             (format t "~&It's your baby, fix it!~%")
-                             (break))
-                            (t
-                             (ignore-errors
-                              (acall :print-condition-backtrace
-                                     c :count 69 :stream *error-output*))
-                             (leave-test "Script failed" 1))))))
-              (funcall (or (asym :call-with-asdf-cache) 'funcall) thunk)
-              (leave-test "Script succeeded" 0)))))
+         (catch :asdf-test-done
+           (handler-bind
+               ((serious-condition
+                 (lambda (c)
+                   (ignore-errors
+                     (format *error-output* "~&TEST ABORTED: ~A~&" c))
+                   (finish-outputs*)
+                   (unless *debug-asdf*
+                     (ignore-errors
+                       (acall :print-condition-backtrace
+                              c :count 69 :stream *error-output*))
+                     (leave-test "Script failed" 1)))))
+             (funcall (or (asym :call-with-asdf-cache) 'funcall) thunk)
+             (leave-test "Script succeeded" 0)))))
     (when *quit-when-done*
       (exit-lisp result))))