docs: private Interest discover(BackoffRetryClient client, On<Long> onFound, On<Void> onComplete, On<Exception> onError) throws IOException {
      Interest interest = new Interest(topicPrefix);
      interest.setInterestLifetimeMilliseconds(STARTING_DISCOVERY_LIFETIME);
      interest.setExclude(excludeKnownPublishers());
      client.retry(face, interest, (interest1, data) -> {
        if (stopped) {
          return;
        }
  
        LOGGER.log(Level.INFO, "Received discovery data ({0} bytes): {1}", new Object[]{data.getContent().size(), data.getName()});
        found(data.getName(), onFound, onError);
  
        // TODO instead of inspecting name should look at content and examine for multiple publishers
        try {
          discover(client, onFound, onComplete, onError); // recursion
        } catch (IOException e) {
          LOGGER.log(Level.SEVERE, "Failed while discovering publishers, aborting: {0}", new Object[]{broadcastPrefix, e});
          onError.on(e);
          // TODO re-call discover here?
        }
      }, interest2 -> {
        // TODO recall client here, we should never be done
      });
      return interest;
    }