Maybe I did not express myself well. I wanted to highlight that reimplementing all features in a few lines of code was some *kind of proof* of a good design.

About the desing itself, I wouldn't say that "protocol specific things leaks into other abstractions" : "leaks" seems to me like an uncontrol and somehow unwanted thing.
The logout process depends on the nature of the service, that's true but that's just *one* of the aspects of the logout : that's why I get rid of the ```logOutOfService```.
The logout process has many aspects which needs to be gathered and cleverly orchestrated at a higher level, in the appropriate component : the ```LogoutManagerImpl```.
Let's imagine a logout process which needs to gather logout requests or order them, it clearly makes sense to have a specific component to handle logout.