private async Task ExecuteQueryAsync(string token)
        {
            try
            {
                IsRunning = true;

                Clean();

                ((StatusBarItemContextCancellableCommand)_progessBarStatusBarItem.DataContext).IsCancellable = true;

                var query = string.IsNullOrEmpty(SelectedText) ? Content.Text : SelectedText;
                _queryResult = await _dbService.ExecuteQueryAsync(Connection, Collection, query, this, token, _cancellationToken.Token).ConfigureAwait(false);

                ((StatusBarItemContextCancellableCommand)_progessBarStatusBarItem.DataContext).IsCancellable = false;

                ContinuationToken = _queryResult.ResponseContinuation;

                RequestCharge    = $"Request Charge: {_queryResult.RequestCharge:N2}";
                QueryInformation = $"Returned {_queryResult.Count:N0} document(s)." +
                                   (ContinuationToken != null
                                                ? " (more results available)"
                                                : string.Empty);

                if (_queryResult.QueryMetrics != null)
                {
                    QueryMetrics = new Dictionary <string, QueryMetrics>
                    {
                        { "All", _queryResult.QueryMetrics.Select(q => q.Value).Aggregate((i, next) => i + next) }
                    };

                    foreach (var metric in _queryResult.QueryMetrics.OrderBy(q => int.Parse(q.Key)))
                    {
                        QueryMetrics.Add(metric.Key, metric.Value);
                    }
                }
                else
                {
                    QueryMetrics = null;
                }

                EditorViewModel.SetText(_queryResult, HideSystemProperties);
                HeaderViewModel.SetText(_queryResult.ResponseHeaders, HideSystemProperties);
            }
            catch (OperationCanceledException)
            {
                Clean();
            }
            catch (DocumentClientException clientEx)
            {
                Clean();
                await _dialogService.ShowError(clientEx.Parse(), "Error", "ok", null).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                Clean();
                await _dialogService.ShowError(ex, "Error", "ok", null).ConfigureAwait(false);
            }
            finally
            {
                IsRunning = false;
            }
        }