public async Task SubmitResponseAsync_ExistingCorrelationId_CompletesRequest()
        {
            // Arrange
            Target.Value.Start();
            var acceptRequestTask = Target.Value.AcceptRequestAsync(CancellationToken);
            var httpRequestTask   = HttpClient.SendAsync(GetHttpRequestMessage, CancellationToken);
            var httpRequest       = await acceptRequestTask;

            // Act
            await Target.Value.SubmitResponseAsync(HttpResponse);

            var httpResponseMessage = await httpRequestTask;

            // Assert
            httpResponseMessage.StatusCode.ShouldBe(HttpResponse.StatusCode);
            httpResponseMessage.ReasonPhrase.ShouldBe(HttpResponse.StatusDescription);
            foreach (var headerName in HttpResponseHeaders.AllKeys)
            {
                var headerValue = HttpResponseHeaders.Get(headerName);

                if (headerName.StartsWith("Content"))
                {
                    httpResponseMessage.Content.Headers.GetValues(headerName).ShouldNotBe(null);
                    httpResponseMessage.Content.Headers.GetValues(headerName).First().ShouldBe(headerValue);
                }
                else
                {
                    httpResponseMessage.Headers.GetValues(headerName).ShouldNotBe(null);
                    httpResponseMessage.Headers.GetValues(headerName).First().ShouldBe(headerValue);
                }
            }
            var responseBody = await httpResponseMessage.Content.ReadAsStringAsync();

            responseBody.ShouldBe(ResponseBody);
        }