/// <summary>
        /// Handles the request.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="signal">The signal.</param>
        /// <exception cref="InvalidExtensionException"></exception>
        private void HandleDequeuedRequest(object sender, ISignal signal)
        {
            IWebSocketConnection[] connections = _connectionManager.GetConnectionsByClientIdentifier(signal.Sender);
            if (!connections.Any())
            {
                return;
            }

            IExtension extension = GetExtension(signal);

            if (extension == null)
            {
                throw new InvalidExtensionException($"Attempted to route an to an invalid extension. Route: {signal.Route}");
            }

            _logger.Debug(signal.Format("Request"));

            ISignal response = extension.ExecuteAction(signal.Action, signal);

            if (response == null)
            {
                return;
            }

            _routerExchangeGenerator.Publish(_responseExchangeId, response);
        }