Purpose of the GameSession class?

Recently I’ve been experimenting a lot with the OnlineSubsystem, I’m trying to figure out an optimal way of handling sessions, and beacons later on.

The docs says that the GameSession class “Acts as a game-specific wrapper around the session interface.” so I’ve created functions like CreateSession(), JoinSession(), etc. in the GameSession class. But here is the issue.

This class is tied to the GameMode therefore it is only available on the server. This is an issue once you try to call DestroySession() on the client to disconnect him. Also it’s whole lifecycle isn’t ideal to be a manager for sessions in general right? As it is spawned via the GameMode, it’s not a “global” thing like the GameInstance.

Should I keep session management in the GameInstance, and let GameSession handle stuff for when we are already in a session?

Thanks in advance!