diff --git a/beat/backend/python/execution/algorithm.py b/beat/backend/python/execution/algorithm.py
index e54bb3117fa648ed8185e53ac7b0a3a56c8b4460..d57f08c06c251e7cd04ca784e84c72617f0732b8 100644
--- a/beat/backend/python/execution/algorithm.py
+++ b/beat/backend/python/execution/algorithm.py
@@ -222,9 +222,6 @@ class AlgorithmExecutor(object):
                     loop_channel=self.loop_channel,
                 )
 
-            if not result:
-                return False
-
         else:
             if self.algorithm.type == Algorithm.LEGACY:
                 logger.warning(
@@ -260,23 +257,22 @@ class AlgorithmExecutor(object):
                             output=self.output_list[0],
                         )
                     else:
-                        try:
-                            result = self.runner.process(
-                                inputs=self.input_list,
-                                data_loaders=self.data_loaders,
-                                outputs=self.output_list,
-                                loop_channel=self.loop_channel,
-                            )
-                        except Exception:
-                            result = None
+                        result = self.runner.process(
+                            inputs=self.input_list,
+                            data_loaders=self.data_loaders,
+                            outputs=self.output_list,
+                            loop_channel=self.loop_channel,
+                        )
 
                 if not result:
-                    self.done({})
-                    return False
+                    break
 
         for output in self.output_list:
             output.close()
 
+        if not result:
+            return False
+
         missing_data_outputs = [x for x in self.output_list if x.isDataMissing()]
 
         if missing_data_outputs: