default void reauthenticate(ReauthenticationContext reauthenticationContext) throws IOException {
        // empty
    }
Begins re-authentication. Uses transportLayer to read or write tokens as is
done for {@link #authenticate()}. For security protocols PLAINTEXT and SSL,
this is a no-op since re-authentication does not apply/is not supported,
respectively. For SASL_PLAINTEXT and SASL_SSL, this performs a SASL
authentication. Any in-flight responses from prior requests can/will be read
and collected for later processing as required. There must not be partially
written requests; any request queued for writing (for which zero bytes have
been written) remains queued until after re-authentication succeeds.

@param reauthenticationContext
           the context in which this re-authentication is occurring. This
           instance is responsible for closing the previous Authenticator
           returned by
           {@link ReauthenticationContext#previousAuthenticator()}.
@throws AuthenticationException
            if authentication fails due to invalid credentials or other
            security configuration errors
@throws IOException
            if read/write fails due to an I/O error
clients/src/main/java/org/apache/kafka/common/network/Authenticator.java