public static CosmosHttpClient CreateCosmosHttpClient(
            Func <HttpClient> httpClient,
            DocumentClientEventSource eventSource = null)
        {
            if (eventSource == null)
            {
                eventSource = DocumentClientEventSource.Instance;
            }

            ConnectionPolicy connectionPolicy = new ConnectionPolicy()
            {
                HttpClientFactory = httpClient
            };

            return(CosmosHttpClientCore.CreateWithConnectionPolicy(
                       apiType: default,
        public async Task ResponseMessageHasRequestMessageAsync()
        {
            // We don't set the RequestMessage property on purpose on the Failed response
            // This will make it go through GatewayStoreClient.CreateDocumentClientExceptionAsync
            Func <HttpRequestMessage, Task <HttpResponseMessage> > sendFunc = request =>
            {
                HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.NotFound)
                {
                    Content = new StringContent("test")
                };
                return(Task.FromResult(response));
            };

            DocumentClientEventSource eventSource      = DocumentClientEventSource.Instance;
            HttpMessageHandler        messageHandler   = new MockMessageHandler(sendFunc);
            CosmosHttpClient          cosmoshttpClient = MockCosmosUtil.CreateCosmosHttpClient(() => new HttpClient(messageHandler));

            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, new Uri("http://localhost"));

            HttpResponseMessage responseMessage = await cosmoshttpClient.SendHttpAsync(() => new ValueTask <HttpRequestMessage>(httpRequestMessage), ResourceType.Collection, null, default);

            Assert.AreEqual(httpRequestMessage, responseMessage.RequestMessage);
        }