public async Task <IResultEnumerable <T> > RunAsync <T>(QuerySpec querySpec) { var client = HttpClientFactory.NewClient(); try { client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", AuthHeader); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var resp = await client.PostAsync(searchApiUri, new StringContent(QueryHelpers.BuildRequest(querySpec), Encoding.ASCII, "application/json")); if (resp.IsErrorResponse(out SumoQueryException sqe)) { throw sqe; } var searchJobLocation = resp.Headers.Location; var cookies = String.Join(";", resp.Headers.Where(h => h.Key.Equals("Set-Cookie", StringComparison.OrdinalIgnoreCase)).SelectMany(h => h.Value)); client.DefaultRequestHeaders.Add("cookie", cookies); var qs = await WaitForQueryResult(client, searchJobLocation); return(new ResultEnumerable <T>(client, searchJobLocation, qs)); } catch (SumoQueryException) { throw; } catch (Exception e) { client.Dispose(); throw new SumoQueryException($"Unhandled error : {e.Message}", e); } }