private async void PollGitHubEvents(object state) { if (Interlocked.Exchange(ref _gettingEvents, 1) == 1) { return; } var events = await _api.GetEvents(); try { foreach (ApiEvent e in events) { // If the event id exists in the cache then its an old entry if (_eventCache.Keys.Contains(e.ID)) { continue; } _eventCache.TryAdd(e.ID, e); if (e.Type == "PullRequestReviewCommentEvent") { var pullRequestData = await _api.GetPullRequestData(e.Payload.Comment.Pull_Request_Url); e.Payload.Issue = pullRequestData; } ApiEvent(e); } } catch (Exception ex) { _logger.LogError(ex.Message); } finally { Interlocked.Exchange(ref _gettingEvents, 0); } }