private Mono<NodeStatus> fetchNodeStatus(String nodeId) {
        Mono<NodeStatus> nodeStatusMono = nodeIdToStatusCache.computeIfAbsent(nodeId,
                id -> node.getDiscoveryService()
                        .checkIfMemberExists(nodeId)
                        .map(isActive -> new NodeStatus(System.nanoTime(), isActive)));
        return nodeStatusMono
                // To not cache error
                .doOnError(t -> nodeIdToStatusCache.remove(nodeId, nodeStatusMono))
                .flatMap(status -> {
                    if ((System.nanoTime() - status.recordTimestampNanos) < NODE_STATUS_TTL_NANOS) {
                        return Mono.just(status);
                    }
                    Mono<NodeStatus> newStatus = Mono.defer(() -> node.getDiscoveryService()
                            .checkIfMemberExists(nodeId)
                            .map(isActive -> new NodeStatus(System.nanoTime(), isActive)));
                    boolean replaced =
                            nodeIdToStatusCache.replace(nodeId, nodeStatusMono, newStatus);
                    return replaced
                            ? newStatus
                                    // To not cache error
                                    .doOnError(t -> nodeIdToStatusCache.remove(nodeId, newStatus))
                            : nodeIdToStatusCache.get(nodeId);
                });
    }
@return {@link UserStatus#OFFLINE} instead of MonoEmpty for the offline user
turms-server-common/src/main/java/im/turms/server/common/domain/session/service/UserStatusService.java