private async Task <bool> ProcessPullRequestAsync(PullRequestMonitorItem item)
        {
            var azDoClient = item.AzDoClient;
            var pr         = await azDoClient.GetPullRequestAsync(item.PullRequest.Repository.Url, item.PullRequest.PullRequestId);

            if (pr.Status != "active")
            {
                //PR was already completed or abandoned.
                _logger.LogTrace(new EventId(5, "NotActive"), "{PullRequestId} for {Repository} not active", pr.PullRequestId, pr.Repository.Id);
                return(true);
            }

            //now we are just dealing with Status = Active

            if (pr.MergeStatus == "queued")
            {
                _logger.LogTrace(new EventId(6, "StillQueued"), "{PullRequestId} for {Repository} is still queued", pr.PullRequestId, pr.Repository.Id);
                return(false);
            }

            if (pr.MergeStatus == "succeeded")
            {
                _logger.LogInformation(new EventId(2, "CompletingPullRequest"), "Completing {PullRequestId} for {Repository}", pr.PullRequestId, pr.Repository.Id);
                await azDoClient.CompletePullRequestAsync(pr.Repository.Url, pr.PullRequestId, pr.LastMergeSourceCommit.CommitId);

                _logger.LogInformation(new EventId(3, "CompletedPullRequest"), "Completed {PullRequestId} for {Repository}", pr.PullRequestId, pr.Repository.Id);
            }

            return(true);
        }
        public void Monitor(PullRequestMonitorItem item)
        {
            if (item is null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            _queue.Enqueue(item);
        }