@Override
    public <T> Mono<T> inTransaction(Function<ClientSession, Mono<T>> action) {
        return Mono.usingWhen(context.getClient()
                .startSession(DEFAULT_SESSION_OPTIONS), session -> {
                    session.startTransaction(DEFAULT_TRANSACTION_OPTIONS);
                    return action.apply(session);
                },
                ClientSession::commitTransaction,
                (session, t) -> session.abortTransaction(),
                ClientSession::commitTransaction);
    }
@implNote Send requests to ensure indexes and shard collections synchronously to avoid mongo
          servers throwing "LockBusy" error (error code 46)
turms-server-common/src/main/java/im/turms/server/common/storage/mongo/operation/TurmsMongoOperations.java