docs: private void startEventQue() {
  
          if (eventQueueThread != null) {
              return;
          }
  
          client.getExecutorService().execute(() -> {
              eventQueueThread = Thread.currentThread();
  
              while (!shutdown) {
                  if (!initialized) {
                      try {
                          logger.debug("not intialized:" + initialized);
                          Thread.sleep(1);
                      } catch (InterruptedException e) {
                          logger.warn(e);
                      }
                      continue; //wait on sending events till the channel is initialized.
                  }
                  final BlockEvent blockEvent;
                  try {
                      blockEvent = channelEventQue.getNextEvent();
                  } catch (EventingException e) {
                      if (!shutdown) {
                          logger.error(e);
                      }
  
                      continue;
                  }
                  if (blockEvent == null) {
                      logger.warn("GOT null block event.");
                      continue;
                  }
  
                  try {
  
                      final String blockchainID = blockEvent.getChannelId();
                      final String from =
                              format("Channel %s eventqueue got block event with block number: %d for channel: %s, from %s",
                                      name, blockEvent.getBlockNumber(), blockchainID, blockEvent.getPeer() != null ? ("" + blockEvent.getPeer()) :
                                              "");
  
                      logger.trace(from);
  
                      if (!Objects.equals(name, blockchainID)) {
                          logger.warn(format("Channel %s eventqueue got block event NOT FOR ME  channelId %s  from %s", name, blockchainID, from));
                          continue; // not targeted for this channel
                      }
  
                      final ArrayList<BL> blcopy = new ArrayList<>(blockListeners.size() + 3);
                      synchronized (blockListeners) {
                          blcopy.addAll(blockListeners.values());
                      }
  
                      for (BL l : blcopy) {
                          try {
                              logger.trace(format("Sending block event '%s' to block listener %s", from, l.handle));
                              if (l.listener != null) {
                                  client.getExecutorService().execute(() -> l.listener.received(blockEvent));
                              } else if (l.blockingQueue != null) {
  
                                  if (l.timeout < 0 || l.timeUnit == null) {
  
                                      l.blockingQueue.put(new QueuedBlockEvent(l.handle, blockEvent));
  
                                  } else {
  
                                      if (!l.blockingQueue.offer(new QueuedBlockEvent(l.handle, blockEvent), l.timeout, l.timeUnit)) {
                                          logger.warn(format("Error calling block listener %s on channel: %s event: %s could not be added in time %d %s ",
                                                  l.handle, name, from, l.timeout, l.timeUnit));
                                      }
                                  }
  
                              }
                          } catch (Throwable e) { //Don't let one register stop rest.
                              logger.error(format("Error calling block listener %s on channel: %s event: %s ", l.handle, name, from), e);
                          }
                      }
                  } catch (Exception e) {
                      logger.error("Unable to parse event", e);
                      logger.debug("event:\n)");
                      logger.debug(blockEvent.toString());
                  }
              }
  
              logger.info(format("Channel %s eventThread shutting down. shutdown: %b  thread: %s ", name, shutdown, Thread.currentThread().getName()));
          });
  
      }