public object Any(SleepTest request)
        {
            var sw = Stopwatch.StartNew();

            Thread.Sleep(TimeSpan.FromSeconds(request.WaitingSecs));

            return(new SleepTestResponse
            {
                Message = $"{request.Name} took {sw.Elapsed.TotalSeconds} secs",
            });
        }
        public void Does_handle_concurrent_requests()
        {
            var rand   = new Random();
            var client = new JsonHttpClient(Config.AbsoluteBaseUri);

            client.GetHttpClient().Timeout = TimeSpan.FromMinutes(5);
            long      responsesReceived    = 0;
            long      totalSecondsWaited   = 0;
            var       sw = Stopwatch.StartNew();
            const int ConcurrentRequests = 50;

            ConcurrentRequests.Times(i =>
            {
                Interlocked.Increment(ref responsesReceived);

                ThreadPool.QueueUserWorkItem(async _ =>
                {
                    var request = new SleepTest
                    {
                        Name        = $"Request {i+1}",
                        WaitingSecs = rand.Next(30, 60),
                    };
                    Interlocked.Add(ref totalSecondsWaited, request.WaitingSecs);

                    log.Info($"[{DateTime.Now.TimeOfDay}] Sending {request.Name} to sleep for {request.WaitingSecs} seconds...");

                    try
                    {
                        var response = await client.GetAsync(request);

                        log.Info($"[{DateTime.Now.TimeOfDay}] Received {request.Name}: {response.Message}");
                    }
                    catch (Exception ex)
                    {
                        log.Error($"[{DateTime.Now.TimeOfDay}] Error Response: {ex.UnwrapIfSingleException().Message}", ex);
                    }
                    finally
                    {
                        Interlocked.Decrement(ref responsesReceived);
                    }
                });
            });

            while (Interlocked.Read(ref responsesReceived) > 0)
            {
                Thread.Sleep(10);
            }

            log.Info($"Took {sw.Elapsed.TotalSeconds} to execute {ConcurrentRequests} Concurrent Requests waiting a total of {totalSecondsWaited} seconds.");
        }