private static void notifyListeners(final DistributedMember member, final boolean client,
      final EventType typeOfEvent) {
    startMonitoring();
    ExecutorService queuedExecutor = executor;
    if (queuedExecutor == null) {
      return;
    }

    final ClientMembershipEvent event = new InternalClientMembershipEvent(member, client);
    if (forceSynchronous) {
      doNotifyClientMembershipListener(member, client, event, typeOfEvent);
    } else {
      try {
        queuedExecutor.execute(() -> {
          doNotifyClientMembershipListener(member, client, event, typeOfEvent);
        });
      } catch (RejectedExecutionException e) {
        // executor must have been shutdown
      }
    }
  }
Notifies registered listeners that a Client member has joined. The new member may be a client
connecting to this process or a server that this process has just connected to.

@param member the {@code DistributedMember}
@param client true if the member is a client; false if server
@param typeOfEvent joined/left/crashed
geode-core/src/main/java/org/apache/geode/internal/cache/tier/InternalClientMembership.java