code: def _release_waiter(self) -> None:
          
          if not self._waiters:
              return
  
          # Having the dict keys ordered this avoids to iterate
          # at the same order at each call.
          queues = list(self._waiters.keys())
          random.shuffle(queues)
  
          for key in queues:
              if self._available_connections(key) < 1:
                  continue
  
              waiters = self._waiters[key]
              while waiters:
                  waiter = waiters.popleft()
                  if not waiter.done():
                      waiter.set_result(None)
                      return
docs: Iterates over all waiters till found one that is not finsihed and
          belongs to a host that has available connections.