diff --git a/utils/lit/lit/worker.py b/utils/lit/lit/worker.py
index f97b6a0..3a4868e 100644
--- a/utils/lit/lit/worker.py
+++ b/utils/lit/lit/worker.py
@@ -56,19 +56,20 @@
     else:
         _execute_test(test, lit_config)
 
+
 def _execute_test(test, lit_config):
     """Execute one test"""
+    start = time.time()
+    result = _execute_test_handle_errors(test, lit_config)
+    end = time.time()
+
+    result.elapsed = end - start
+    test.setResult(result)
+
+
+def _execute_test_handle_errors(test, lit_config):
     try:
-        start_time = time.time()
-        result = test.config.test_format.execute(test, lit_config)
-        # Support deprecated result from execute() which returned the result
-        # code and additional output as a tuple.
-        if isinstance(result, tuple):
-            code, output = result
-            result = lit.Test.Result(code, output)
-        elif not isinstance(result, lit.Test.Result):
-            raise ValueError("unexpected result from test execution")
-        result.elapsed = time.time() - start_time
+        return _adapt_result(test.config.test_format.execute(test, lit_config))
     except KeyboardInterrupt:
         raise
     except:
@@ -77,6 +78,14 @@
         output = 'Exception during script execution:\n'
         output += traceback.format_exc()
         output += '\n'
-        result = lit.Test.Result(lit.Test.UNRESOLVED, output)
+        return lit.Test.Result(lit.Test.UNRESOLVED, output)
 
-    test.setResult(result)
+
+# Support deprecated result from execute() which returned the result
+# code and additional output as a tuple.
+def _adapt_result(result):
+    if isinstance(result, lit.Test.Result):
+        return result
+    assert isinstance(result, tuple)
+    code, output = result
+    return lit.Test.Result(code, output)
