Client.close and other lifecycle events should be controller by the ConnManager.
InstanceManager is creating Client instance separately for AuthMan and ConnMan. Should they manage them themselves and other components get it from them? Or InstMan should remain the single source of truth?
Of course, some of the same logic applies go GAuthMan...