diff --git a/src/caosdb/transaction.cpp b/src/caosdb/transaction.cpp
index 3be26bd8e09894a5555703a4048979f231845760..a2008c74c57e5d0e84c6ba8b35a86f15020eb2a3 100644
--- a/src/caosdb/transaction.cpp
+++ b/src/caosdb/transaction.cpp
@@ -310,7 +310,7 @@ auto Transaction::ExecuteAsynchronously() noexcept -> StatusCode {
       handler_ = std::make_unique<UploadRequestHandler>(
         &handler_, file_service.get(), &completion_queue, file_descriptor);
       this->status = ProcessCalls();
-      if (this->status.GetCode() != StatusCode::SUCCESS) {
+      if (this->status.GetCode() != StatusCode::EXECUTING) {
         return StatusCode::EXECUTING;
       }
     }
@@ -357,6 +357,9 @@ auto Transaction::ExecuteAsynchronously() noexcept -> StatusCode {
 }
 
 auto Transaction::WaitForIt() const noexcept -> TransactionStatus {
+  if (this->status.GetCode() != StatusCode::EXECUTING) {
+    return this->status;
+  }
   bool set_error = false;
   auto *responses = this->response->mutable_responses();
   std::vector<std::unique_ptr<Entity>> entities;