Example #1
0
        public async Task <SubscriptionUpdate[]> GetLatestAsync(CancellationToken cancellationToken)
        {
            var subscriptions = await _subscriptionProvider.GetSubscriptionsAsync(cancellationToken);

            var tasks = subscriptions
                        .Select(async s =>
            {
                try
                {
                    return(await UpdateSubscriptionAsync(s, cancellationToken));
                }
                catch (Exception)
                {
                    // TODO: will result in loss of data if not tracked
                    return(await Task.FromResult(new SubscriptionUpdate[0]));
                }
            })
                        .ToList();

            await Task.WhenAll(tasks);

            return(tasks
                   .Where(t => t.Result != null)
                   .SelectMany(t => t.Result)
                   .ToArray());
        }