diff --git a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm index 947e7a39679260..869f8b692ac7d6 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm @@ -2404,8 +2404,10 @@ - (void)_setupSubscriptionWithReason:(NSString *)reason NSNumber * _Nullable retryDelay) { if (error != nil) { MTR_LOG_ERROR("%@ getSessionForNode error %@", self, error); - [self _handleSubscriptionError:error]; - [self _handleSubscriptionReset:retryDelay]; + [self->_deviceController asyncDispatchToMatterQueue:^{ + [self _handleSubscriptionError:error]; + [self _handleSubscriptionReset:retryDelay]; + } errorHandler:nil]; return; }