docs: public List<Attribute> read(int limit) throws InterruptedException {
          // blocks until the queue contains at least 1 element
          while (queue.isEmpty()) {
              synchronized (this) {
                  wait();
              }
          }
  
          return queue.values().stream().limit(limit).collect(Collectors.toList());
      }