diff --git a/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift b/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift
index c941a8f9c6087f2533309f7223b42f5ac487e7b0..d1872840470448de3dccfb2e9af2b2f4ad135324 100644
--- a/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift
+++ b/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift
@@ -141,6 +141,7 @@ public let restoreReducer = Reducer<RestoreState, RestoreAction, RestoreEnvironm
         ))
         return .success(.finished)
       } catch {
+        try? env.messenger.destroy()
         return .success(.failed(error as NSError))
       }
     }
diff --git a/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift b/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift
index 88bf551f47b1b30257c6d35c4374a8a2bf66d75d..4e55f78bf14a04fe0aea7885f2f86d3783e6b04c 100644
--- a/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift
+++ b/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift
@@ -167,6 +167,8 @@ final class RestoreFeatureTests: XCTestCase {
     struct Failure: Error {}
     let failure = Failure()
 
+    var didDestroyMessenger = 0
+
     let store = TestStore(
       initialState: RestoreState(
         file: .init(name: "name", data: "data".data(using: .utf8)!)
@@ -178,11 +180,14 @@ final class RestoreFeatureTests: XCTestCase {
     store.environment.bgQueue = .immediate
     store.environment.mainQueue = .immediate
     store.environment.messenger.restoreBackup.run = { _, _ in throw failure }
+    store.environment.messenger.destroy.run = { didDestroyMessenger += 1 }
 
     store.send(.restoreTapped) {
       $0.isRestoring = true
     }
 
+    XCTAssertEqual(didDestroyMessenger, 1)
+
     store.receive(.failed(failure as NSError)) {
       $0.isRestoring = false
       $0.restoreFailure = failure.localizedDescription