private static async Task GetHttpResponse()

in src/Cli/func/Kubernetes/KubernetesHelper.cs [386:425]


        private static async Task<HttpResponseMessage> GetHttpResponse(HttpRequestMessage httpRequestMessage, int retryCount = 5)
        {
            HttpResponseMessage httpResponseMsg = new HttpResponseMessage();
            if (httpRequestMessage == null)
            {
                return httpResponseMsg;
            }

            int currentRetry = 0;
            using (var httpClient = new HttpClient(new HttpClientHandler()))
            {
                httpClient.Timeout = TimeSpan.FromSeconds(2);
                while (currentRetry++ < retryCount)
                {
                    try
                    {
                        httpResponseMsg = await httpClient.SendAsync(httpRequestMessage.Clone());
                        if (httpResponseMsg.IsSuccessStatusCode ||
                            (httpResponseMsg.StatusCode != System.Net.HttpStatusCode.BadGateway
                            && httpResponseMsg.StatusCode != System.Net.HttpStatusCode.RequestTimeout
                            && httpResponseMsg.StatusCode != System.Net.HttpStatusCode.GatewayTimeout
                            && httpResponseMsg.StatusCode != System.Net.HttpStatusCode.NotFound))
                        {
                            return httpResponseMsg;
                        }
                    }
                    catch (Exception e)
                    {
                        if (StaticSettings.IsDebug)
                        {
                            ColoredConsole.Error.WriteLine(e);
                        }
                    }

                    await Task.Delay(new Random().Next(500, 2000));
                }
            }

            return httpResponseMsg;
        }