code: def _do_cancel_problems(self):
          
          try:
              while True:
                  # Pull as many problems as we can, block when none are available.
  
                  # `None` task is used to signal thread termination
                  item = self._cancel_queue.get()
                  if item is None:
                      break
  
                  item_list = [item]
                  while True:
                      try:
                          item_list.append(self._cancel_queue.get_nowait())
                      except queue.Empty:
                          break
  
                  # Submit the problems, attach the ids as a json list in the
                  # body of the delete query.
                  try:
                      body = [item[0] for item in item_list]
  
                      try:
                          self.session.delete(posixpath.join(self.endpoint, 'problems/'), json=body)
                      except requests.exceptions.Timeout:
                          raise RequestTimeout
  
                  except Exception as err:
                      for _, future in item_list:
                          if future is not None:
                              future._set_error(err, sys.exc_info())
  
                  # Mark all the ids as processed regardless of success or failure.
                  [self._cancel_queue.task_done() for _ in item_list]
  
                  # this is equivalent to a yield to scheduler in other threading libraries
                  time.sleep(0)
  
          except Exception as err:
              _LOGGER.exception(err)
docs: Pull ids from the cancel queue and submit them.
  
          Note:
              This method is always run inside of a daemon thread.