private Task QueryAsync(string query,
                                string dialect,
                                FluxCsvParser.IFluxResponseConsumer responseConsumer,
                                Action <Exception> onError,
                                Action onComplete)
        {
            var message = QueryRequest(CreateBody(dialect, query));

            return(Query(message, responseConsumer, onError, onComplete));
        }
        protected Task Query(RestRequest query, FluxCsvParser.IFluxResponseConsumer responseConsumer,
                             Action <Exception> onError,
                             Action onComplete)
        {
            void Consumer(ICancellable cancellable, Stream bufferedStream)
            {
                try
                {
                    _csvParser.ParseFluxResponse(bufferedStream, cancellable, responseConsumer);
                }
                catch (IOException e)
                {
                    onError(e);
                }
            }

            return(Query(query, Consumer, onError, onComplete));
        }