public static async Task <bool> WaitForLightBulbSessionAsync(ILightBulbBroker broker, IWpfTextView view, CancellationToken cancellationToken) { var startTime = DateTimeOffset.Now; var active = await Helper.RetryAsync(async cancellationToken => { if (broker.IsLightBulbSessionActive(view)) { return(true); } if (cancellationToken.IsCancellationRequested) { throw new InvalidOperationException("Expected a light bulb session to appear."); } if (broker.IsLightBulbSessionActive(view)) { var session = broker.GetSession(view); var hasSuggestedActions = await broker.HasSuggestedActionsAsync(session.ActionCategories, view, cancellationToken); return(hasSuggestedActions); } return(false); }, TimeSpan.FromMilliseconds(1), cancellationToken); if (!active) { return(false); } await WaitForItemsAsync(broker, view, cancellationToken); return(true); }