internal async void MakeNextQuery(string cursor = null)
        {
            _sync.Reset();
            _response = null;
            _line     = -1;

            try
            {
                var escapedCommand = _command.CommandText.Replace("\"", "\\\"");

                StringContent content;

                if (cursor == null)
                {
                    content = new StringContent($"{{ \"query\": \"{escapedCommand}\", \"fetch_size\": {_command._connection._connString.FetchSize} }}", Encoding.UTF8, "application/json");
                }
                else
                {
                    content = new StringContent($"{{ \"cursor\": \"{cursor}\" }}", Encoding.UTF8, "application/json");
                }

                var response = await _command._httpClient.PostAsync("", content).ConfigureAwait(false);

                using (response)
                {
                    var responseString = await response.Content.ReadAsStringAsync();

                    _response = JsonConvert.DeserializeObject <ElasticSearchResponse>(responseString);

                    if (_response.Columns != null)
                    {
                        _columns = _response.Columns;
                    }
                }
            }
            catch (Exception x)
            {
                throw;
            }
            finally
            {
                _sync.Set();
            }
        }
 public void Dispose()
 {
     _command  = null;
     _response = null;
 }