private async Task ReverseProxyGet(HttpRequest req, HttpResponse res)
        {
            await AwaitInitTask();

            string responseString;

            using (var tracker = new ConcurrentRequestTracker())
            {
                var(baseurl, port) = ComputeChildren.GetComputeServerBaseUrl();
                var proxyResponse = await SendProxyRequest(req, HttpMethod.Get, baseurl);

                ComputeChildren.UpdateLastCall();
                if (proxyResponse.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    ComputeChildren.MoveToFrontOfQueue(port);
                }

                responseString = await proxyResponse.Content.ReadAsStringAsync();
            }
            await res.WriteAsync(responseString);
        }
        static void Initialize()
        {
            if (_initCalled)
            {
                return;
            }
            _initCalled = true;

            _client = new HttpClient(new HttpClientHandler {
                AllowAutoRedirect = false
            });
            _client.DefaultRequestHeaders.Add("User-Agent", $"compute.rhino3d-proxy/1.0.0");

            // Launch child processes on start. Getting the base url is enough to get things rolling
            ComputeChildren.UpdateLastCall();
            _initTask = Task.Run(() =>
            {
                var(url, port) = ComputeChildren.GetComputeServerBaseUrl();
                ComputeChildren.MoveToFrontOfQueue(port);
            });
        }