code: public BEvent takeExternalEvent() throws InterruptedException {
          BEvent next = recentlyEnqueuedExternalEvents.take();
  
          if (next == NO_MORE_WAIT_EXTERNAL) {
              waitForExternalEvents = false;
              return null;
          } else {
              return next;
          }
      }
docs: Blocks until an external event is added. Then, if that event is not the
  "stop daemon mode" one, returns the event. Otherwise, returns
  {@code null}.
  
  @return The event, or {@code null} in case the daemon mode is turned off
  during the wait.
  @throws InterruptedException (blocking call, we have to do this)