public Task <FilteredCompletionModel> UpdateCompletionListAsync(IAsyncCompletionSession session, AsyncCompletionSessionDataSnapshot data, CancellationToken token) { Task <FilteredCompletionModel> Next() => nextManager.UpdateCompletionListAsync(session, data, token); switch (data.Trigger.Reason) { case CompletionTriggerReason.Deletion: case CompletionTriggerReason.Insertion: case CompletionTriggerReason.Backspace: case CompletionTriggerReason.Invoke: break; default: return(Next()); } if (!session.Properties.TryGetProperty(typeof(MSBuildCompletionSource.NuGetSearchUpdater), out MSBuildCompletionSource.NuGetSearchUpdater searchInfo)) { return(Next()); } //don't pass the CancellationToken to the search job, else filtering operations will cancel searches var newList = searchInfo.Update(this, data); if (newList.Length != data.InitialSortedList.Length) { data = new AsyncCompletionSessionDataSnapshot( newList, data.Snapshot, data.Trigger, data.InitialTrigger, data.SelectedFilters, data.IsSoftSelected, data.DisplaySuggestionItem ); } return(Next()); }