Unter Windows habe ich das nicht getestet, unter Linux scheint der Eintrag auf jeden Fall nicht korrekt gelöscht werden.
Das OnExecute wird doch nur ausgeführt, wenn was vom Client kommt oder nicht? Wenn also kein Client mehr irgendetwas auslöst - weil die Verbindung getrennt wurde - kann der disconnect dann überhaupt erkannt werden?
Das Problem ist ja nicht, den Context zu untersuchen, sondern den zugehörigen Client zu löschen.
Ich werde die Lösung auf jeden Fall mal testen