protected async Task <TResult> SendAsync <TRequest, TResult>(TRequest requestObj, HttpMethod httpMethod, string uri, CancellationToken cancellationToken) where TRequest : BotRequest where TResult : BotResponse, new() { string requestContent = ModelConverter.Serialize(requestObj); using (var request = new HttpRequestMessage(httpMethod, uri)) { request.Content = new StringContent(requestContent, Encoding.UTF8, MediaType); return(await this.HandleResponse <TResult>(request, cancellationToken).ConfigureAwait(false)); } }