public async void WorkerError(HttpWorkerErrorEvent workerError)
 {
     if (!_disposing)
     {
         _logger.LogDebug("Handling WorkerErrorEvent for workerId:{workerId}", workerError.WorkerId);
         AddOrUpdateErrorBucket(workerError);
         await DisposeAndRestartWorkerChannel(workerError.WorkerId);
     }
 }
 private void AddOrUpdateErrorBucket(HttpWorkerErrorEvent currentErrorEvent)
 {
     if (_invokerErrors.TryPeek(out HttpWorkerErrorEvent top))
     {
         if ((currentErrorEvent.CreatedAt - top.CreatedAt) > thresholdBetweenRestarts)
         {
             while (!_invokerErrors.IsEmpty)
             {
                 _invokerErrors.TryPop(out HttpWorkerErrorEvent popped);
                 _logger.LogDebug($"Popping out errorEvent createdAt:{popped.CreatedAt} workerId:{popped.WorkerId}");
             }
         }
     }
     _invokerErrors.Push(currentErrorEvent);
 }