                 }
                 
             case .succeeded:
-                self.deleteTransaction(param: param)
-                param.completion(result)
+                self.deleteTransaction(param: param) { _ in
+                    param.completion(result)
+                }
             }
         }
     }
     
-    internal func deleteTransaction(param: Parameter) {
+    internal func deleteTransaction(param: Parameter, completion: @escaping (RequestResult) -> Void) {
         let deletePath = path.build("\(temporaryPath)/\(param.parentPath)")
-        request.delete(path: deletePath) { _ in }
+        request.delete(path: deletePath) { result in
+            completion(result)
+        }
     }
     
-    internal func checkTryCount(param: Parameter, pass: () -> Void) {
+    internal func checkTryCount(param: Parameter, pass: @escaping () -> Void) {
         if tryCount + 1 == maxTry {
-            deleteTransaction(param: param)
-            param.completion(.failed(RequestError.maxTryReached))
-            tryCount = 0
+            deleteTransaction(param: param) { _ in
+                param.completion(.failed(RequestError.maxTryReached))
+                self.tryCount = 0
+            }
             
         } else {
             tryCount += 1

                    return
                }
                
                let info = [param.parentPath: true]
                let writePath = self.path.build(self.temporaryPath)
                self.writeTransaction(param: param, info: info, writePath: writePath)
                
            case .succeeded:
                self.checkTryCount(param: param) {
                    self.readTransaction(param: param, readPath: readPath)
                }
            }
        }

    }
}

