void TimerElapsed(object state) { Timer.Change(Timeout.Infinite, Timeout.Infinite); bool resubscribe = false; try { var result = Client.IsSubscribed(new IsSubscribedRequest { Id = Subscription.Id }, deadline: DateTime.UtcNow.AddSeconds(15)); resubscribe = !result.Subscribed; } catch { resubscribe = true; } if (resubscribe) { Console.WriteLine("Try to resubscribe..."); SubscriptionCancel.Cancel(); SubscriptionCancel = new CancellationTokenSource(); SubscribeToEvent(SubscriptionCancel.Token).ConfigureAwait(false).GetAwaiter(); } Timer.Change(REQUEST_INTERVAL, Timeout.Infinite); }