internal RavenJToken GetCachedResponse(HttpJsonRequest httpJsonRequest, HttpResponseHeaders additionalHeaders)
        {
            if (httpJsonRequest.CachedRequestDetails == null)
                throw new InvalidOperationException("Cannot get cached response from a request that has no cached information");
            httpJsonRequest.ResponseStatusCode = HttpStatusCode.NotModified;
            httpJsonRequest.ResponseHeaders = new NameValueCollection(httpJsonRequest.CachedRequestDetails.Headers);

            if (additionalHeaders != null)
            {
                string forcePrimaryServerCHeck = additionalHeaders.GetFirstValue(Constants.RavenForcePrimaryServerCheck);
                if (forcePrimaryServerCHeck != null)
                    httpJsonRequest.ResponseHeaders.Add(Constants.RavenForcePrimaryServerCheck, forcePrimaryServerCHeck);
            }

            IncrementCachedRequests();
            return httpJsonRequest.CachedRequestDetails.Data.CloneToken();
        }