code: @Override
    protected void channelRead0(final ChannelHandlerContext ctx, final ByteBuf msg) throws Exception {
      if (SaslListMechsResponse.is(msg)) {
        handleListMechsResponse(ctx, msg);
      } else if (SaslAuthResponse.is(msg)) {
        handleAuthResponse(ctx, msg);
      } else if (SaslStepResponse.is(msg)) {
        checkIsAuthed(ctx, MessageUtil.getResponseStatus(msg));
      } else {
        throw new IllegalStateException("Received unexpected SASL response! " + MessageUtil.humanize(msg));
      }
    }
docs: Every time we recieve a message as part of the negotiation process, handle
  it according to the req/res process.