public async Task Initialise(ConnectionInformation connectionInformation)
        {
            SlackKey       = connectionInformation.SlackKey;
            Team           = connectionInformation.Team;
            Self           = connectionInformation.Self;
            _userCache     = connectionInformation.Users;
            _connectedHubs = connectionInformation.SlackChatHubs;

            _webSocketClient          = connectionInformation.WebSocket;
            _webSocketClient.OnClose += (sender, args) =>
            {
                ConnectedSince = null;
                RaiseOnDisconnect();
            };

            _webSocketClient.OnMessage += async(sender, message) => await ListenTo(message);

            ConnectedSince = DateTime.Now;

            _pingPongMonitor = _monitoringFactory.CreatePingPongMonitor();
            await _pingPongMonitor.StartMonitor(Ping, Reconnect, TimeSpan.FromMinutes(2));
        }