@SuppressWarnings("ThrowableNotThrown")
        @Override
        public void handleException(Throwable e) {
            if (e instanceof MigrationClientAuthException) {
                KRaftMigrationDriver.this.faultHandler.handleFault("Encountered ZooKeeper authentication in " + this, e);
            } else if (e instanceof MigrationClientException) {
                log.info(String.format("Encountered ZooKeeper error during event %s. Will retry.", this), e.getCause());
            } else if (e instanceof RejectedExecutionException) {
                log.debug("Not processing {} because the event queue is closed.", this);
            } else {
                KRaftMigrationDriver.this.faultHandler.handleFault("Unhandled error in " + this, e);
            }
        }
Construct and enqueue a {@link MetadataChangeEvent} with a given completion handler. In production use cases,
this handler is a no-op. This method exists so that we can add additional logic in our unit tests to wait for the
enqueued event to finish executing.
metadata/src/main/java/org/apache/kafka/metadata/migration/KRaftMigrationDriver.java