public async Task<SparkGrid> GetSkysparkRecordsAsync(string evalExpression) { var pointsPostRequest = new RestRequest(_siteApiEndpoint + evalExpression, Method.GET); pointsPostRequest.AddParameter("text/plain", "", ParameterType.RequestBody); var response = await ExecuteAsync<RestResponse>(pointsPostRequest); if (response.StatusCode != HttpStatusCode.OK) { throw new Exception($"Request to Skyspark failed! Http Response details: {response}"); } var records = JsonConvert.DeserializeObject<SparkGrid>(response.Content); return records; } private Task<IRestResponse> SendRequestToSkysparkAsync<T>(RestRequest request) where T : new() { var skySparkEndPoint = _skysparkBaseApiUrl; var restClient = new RestClient(skySparkEndPoint); var taskCompletionSource = new TaskCompletionSource<IRestResponse>(); var basicAuth = new HttpBasicAuthenticator(_username, _password); basicAuth.Authenticate(restClient, request); restClient.ExecuteAsync<T>(request, (response) => taskCompletionSource.SetResult(response.Data)); return taskCompletionSource.Task; }