/// <summary>
        /// Forwards current request to the specified destination uri.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="destinationUri">Destination Uri</param>
        public async Task ProxyRequest(HttpContext context, Uri destinationUri)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (destinationUri == null)
            {
                throw new ArgumentNullException(nameof(destinationUri));
            }

            if (context.WebSockets.IsWebSocketRequest)
            {
                await _webSocketRequestService.AcceptProxyWebSocketRequest(context, destinationUri);
            }
            else
            {
                await _httpRequestService.SendProxyHttpRequest(context, destinationUri);
            }
        }