/// <inheritdoc />
        /// <summary>
        /// Routes the specified signal from an extension to another extension.
        /// </summary>
        /// <param name="signal">The signal.</param>
        /// <returns></returns>
        /// <exception cref="T:Loki.SignalServer.Interfaces.Exceptions.DependencyNotInitException">SignalRouter</exception>
        public ISignal RouteExtension(ISignal signal)
        {
            if (!_isInitialized)
            {
                throw new DependencyNotInitException(nameof(SignalRouter));
            }

            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("Cross Request"));

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

            if (response == null)
            {
                return(null);
            }

            _logger.Debug(signal.Format("Cross Response"));

            return(response);
        }