public Task <R <TResponse> > Put <TBody, TResponse>(string uri, TBody body, HttpSettings settings = null) => throw new NotImplementedException();
 public Task <R <TResponse> > Delete <TResponse>(string uri, HttpSettings settings = null) => throw new NotImplementedException();
        public async Task <R <TResponse> > Post <TBody, TResponse>(string uri, TBody body, HttpSettings settings = null)
        {
            using (var request = new HttpRequestMessage(HttpMethod.Post, uri))
            {
                ApplySettings(request, settings);

                var serializedBody = JsonConvert.SerializeObject(body);

                request.Content = new StringContent(serializedBody, Encoding.UTF8, "application/json");

                var response = await requestSender.Send(request);

                var deserialized = await responseDeserializer.Deserialize <TResponse>(response);

                return(deserialized);
            }
        }