diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerRestoreBackup.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerRestoreBackup.swift
index 9f0d591b44e0820c6f2f6af6611055c72f74be06..e32e6324cb1eeebc7dce54b8cc3769d830f4d43e 100644
--- a/Sources/XXMessengerClient/Messenger/Functions/MessengerRestoreBackup.swift
+++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerRestoreBackup.swift
@@ -30,58 +30,53 @@ extension MessengerRestoreBackup {
   public static func live(_ env: MessengerEnvironment) -> MessengerRestoreBackup {
     MessengerRestoreBackup { backupData, backupPassphrase in
       let storageDir = env.storageDir
-      do {
-        let ndfData = try env.downloadNDF(env.ndfEnvironment)
-        let password = env.generateSecret()
-        try env.passwordStorage.save(password)
-        try env.fileManager.removeDirectory(storageDir)
-        try env.fileManager.createDirectory(storageDir)
-        let report = try env.newCMixFromBackup(
-          ndfJSON: String(data: ndfData, encoding: .utf8)!,
-          storageDir: storageDir,
-          backupPassphrase: backupPassphrase,
-          sessionPassword: password,
-          backupFileContents: backupData
-        )
-        let cMix = try env.loadCMix(
-          storageDir: storageDir,
-          password: password,
-          cMixParamsJSON: env.getCMixParams()
-        )
-        try cMix.startNetworkFollower(timeoutMS: 30_000)
-        let e2e = try env.login(
-          cMixId: cMix.getId(),
-          authCallbacks: env.authCallbacks.registered(),
-          identity: try cMix.makeReceptionIdentity(legacy: true),
-          e2eParamsJSON: env.getE2EParams()
-        )
-        let decoder = JSONDecoder()
-        let paramsData = report.params.data(using: .utf8)!
-        let params = try decoder.decode(BackupParams.self, from: paramsData)
-        let ud = try env.newUdManagerFromBackup(
-          params: NewUdManagerFromBackup.Params(
-            e2eId: e2e.getId(),
-            username: Fact(type: .username, value: params.username),
-            email: params.email.map { Fact(type: .email, value: $0) },
-            phone: params.phone.map { Fact(type: .phone, value: $0) },
-            cert: env.udCert ?? e2e.getUdCertFromNdf(),
-            contact: env.udContact ?? (try e2e.getUdContactFromNdf()),
-            address: env.udAddress ?? e2e.getUdAddressFromNdf()
-          ),
-          follower: UdNetworkStatus { cMix.networkFollowerStatus() }
-        )
-        env.cMix.set(cMix)
-        env.e2e.set(e2e)
-        env.ud.set(ud)
-        env.isListeningForMessages.set(false)
-        return Result(
-          restoredParams: params,
-          restoredContacts: report.restoredContacts
-        )
-      } catch {
-        try? env.fileManager.removeDirectory(storageDir)
-        throw error
-      }
+      let ndfData = try env.downloadNDF(env.ndfEnvironment)
+      let password = env.generateSecret()
+      try env.passwordStorage.save(password)
+      try env.fileManager.removeDirectory(storageDir)
+      try env.fileManager.createDirectory(storageDir)
+      let report = try env.newCMixFromBackup(
+        ndfJSON: String(data: ndfData, encoding: .utf8)!,
+        storageDir: storageDir,
+        backupPassphrase: backupPassphrase,
+        sessionPassword: password,
+        backupFileContents: backupData
+      )
+      let cMix = try env.loadCMix(
+        storageDir: storageDir,
+        password: password,
+        cMixParamsJSON: env.getCMixParams()
+      )
+      env.cMix.set(cMix)
+      try cMix.startNetworkFollower(timeoutMS: 30_000)
+      let e2e = try env.login(
+        cMixId: cMix.getId(),
+        authCallbacks: env.authCallbacks.registered(),
+        identity: try cMix.makeReceptionIdentity(legacy: true),
+        e2eParamsJSON: env.getE2EParams()
+      )
+      env.e2e.set(e2e)
+      env.isListeningForMessages.set(false)
+      let decoder = JSONDecoder()
+      let paramsData = report.params.data(using: .utf8)!
+      let params = try decoder.decode(BackupParams.self, from: paramsData)
+      let ud = try env.newUdManagerFromBackup(
+        params: NewUdManagerFromBackup.Params(
+          e2eId: e2e.getId(),
+          username: Fact(type: .username, value: params.username),
+          email: params.email.map { Fact(type: .email, value: $0) },
+          phone: params.phone.map { Fact(type: .phone, value: $0) },
+          cert: env.udCert ?? e2e.getUdCertFromNdf(),
+          contact: env.udContact ?? (try e2e.getUdContactFromNdf()),
+          address: env.udAddress ?? e2e.getUdAddressFromNdf()
+        ),
+        follower: UdNetworkStatus { cMix.networkFollowerStatus() }
+      )
+      env.ud.set(ud)
+      return Result(
+        restoredParams: params,
+        restoredContacts: report.restoredContacts
+      )
     }
   }
 }
diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift
index fb8fe7da315df608763b572a273ec67ef2c8366c..3e2dc1f2b8ea333fd1155a06b2010d7f3faeee13 100644
--- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift
@@ -136,6 +136,7 @@ final class MessengerRestoreBackupTests: XCTestCase {
         password: password,
         cMixParams: cMixParams
       ),
+      .didSetCMix,
       .cMixDidStartNetworkFollower(
         timeoutMS: 30_000
       ),
@@ -148,6 +149,10 @@ final class MessengerRestoreBackupTests: XCTestCase {
         identity: receptionIdentity,
         e2eParamsJSON: e2eParams
       ),
+      .didSetE2E,
+      .didSetIsListeningForMessages(
+        isListening: false
+      ),
       .didNewUdManagerFromBackup(params: .init(
         e2eId: e2eId,
         username: Fact(type: .username, value: backupParams.username),
@@ -157,12 +162,7 @@ final class MessengerRestoreBackupTests: XCTestCase {
         contact: udContactFromNdf,
         address: udAddressFromNdf
       )),
-      .didSetCMix,
-      .didSetE2E,
       .didSetUD,
-      .didSetIsListeningForMessages(
-        isListening: false
-      ),
     ])
 
     XCTAssertNoDifference(result, MessengerRestoreBackup.Result(
@@ -175,19 +175,13 @@ final class MessengerRestoreBackupTests: XCTestCase {
     struct Failure: Error, Equatable {}
     let failure = Failure()
 
-    var actions: [CaughtAction] = []
-
     var env: MessengerEnvironment = .unimplemented
     env.downloadNDF.run = { _ in throw failure }
-    env.fileManager.removeDirectory = { actions.append(.didRemoveDirectory(path: $0)) }
     let restore: MessengerRestoreBackup = .live(env)
 
     XCTAssertThrowsError(try restore(backupData: Data(), backupPassphrase: "")) { error in
       XCTAssertNoDifference(error as? Failure, failure)
     }
-    XCTAssertNoDifference(actions, [
-      .didRemoveDirectory(path: env.storageDir)
-    ])
   }
 }