diff --git a/src/core/ext/filters/client_channel/client_channel.cc b/src/core/ext/filters/client_channel/client_channel.cc index 5aed2e113e0..4768e46449e 100644 --- a/src/core/ext/filters/client_channel/client_channel.cc +++ b/src/core/ext/filters/client_channel/client_channel.cc @@ -1151,11 +1151,11 @@ void ChannelData::ExternalConnectivityWatcher::Notify( MemoryOrder::RELAXED)) { return; // Already done. } + // Remove external watcher. + chand_->RemoveExternalConnectivityWatcher(on_complete_, /*cancel=*/false); // Report new state to the user. *state_ = state; GRPC_CLOSURE_SCHED(on_complete_, GRPC_ERROR_NONE); - // Remove external watcher. - chand_->RemoveExternalConnectivityWatcher(on_complete_, /*cancel=*/false); // Hop back into the combiner to clean up. // Not needed in state SHUTDOWN, because the tracker will // automatically remove all watchers in that case.