public async ReusableTask AnnounceAsync(ITracker tracker, CancellationToken token) { Check.Tracker(tracker); // If the user initiates an Announce we need to go to the correct thread to process it. await ClientEngine.MainLoop; try { var trackerTier = Tiers.First(t => t.Trackers.Contains(tracker)); AnnounceRequest args = RequestFactory.CreateAnnounce(TorrentEvent.None); await AnnounceTrackerAsync(trackerTier, args, tracker, token); } catch { } }