code: @Override
      protected synchronized void broadcast(Message message) { // synchronized for message ID ordering
          try {
              assert message.isBroadcast() && !message.isResponse();
  
              assignMessageId(message);
              final boolean unicast = getNumPeerNodes() < minimumNodesToMulticast;
              final ShortSet nodes = new ShortOpenHashSet();
              for (NodePeer peer : peers.values()) {
                  nodes.add(peer.node);
                  peer.sendMessage(message, unicast);
                  executor.submit(peer);
              }
              if (nodes.isEmpty()) {
                  if (message instanceof LineMessage) {
                      LOG.debug("No other nodes in cluster. Responding with NOT_FOUND to message {}", message);
                      receive(Message.NOT_FOUND((LineMessage) message).setIncoming());
                  }
                  return;
              }
              broadcastPeer.sendMessage(message, nodes, unicast);
              if (!unicast)
                  executor.submit(broadcastPeer);
          } catch (InterruptedException ex) {
              LOG.error("InterruptedException", ex);
              throw new RuntimeException(ex);
          }
      }
docs: Can block