 
         let diff = Date().timeIntervalSince(self.checkTargetDeviceGotClaimedStartTime!)
         if (diff > MeshSetup.deviceGettingClaimedTimeout) {
-            fail(withReason: .DeviceGettingClaimedTimeout)
+            self.checkTargetDeviceGotClaimedStartTime = nil
+            self.fail(withReason: .DeviceGettingClaimedTimeout)
             return
         }
 

    override func reset() {
        self.isConnected = false
        self.isClaimed = false
    }

    private func checkTargetDeviceGotConnected() {


                DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(3)) {
                    [weak self, weak context] in

                    guard let self = self, let context = context, !context.canceled else {
                        return
                    }
