private Timeout addSessionEstablishTimeoutTask(int establishTimeoutMillis) {
        return SESSION_ESTABLISH_TIMEOUT_TIMER.newTimeout(timeout -> {
            if (userSession == null || !userSession.isOpen()) {
                CloseReason closeReason = CloseReason.get(SessionCloseStatus.LOGIN_TIMEOUT);
                connection.close(closeReason);
            }
        }, establishTimeoutMillis, TimeUnit.MILLISECONDS);
    }
Use {@link ByteArrayWrapper} instead of {@code byte[]} because {@link ByteArrayWrapper} will
be used as the key of Map in multiple places
turms-gateway/src/main/java/im/turms/gateway/access/client/common/UserSessionWrapper.java