docs: @Override
    public Mono<ServiceDiscovery> start() {
      return Mono.defer(
          () -> {
            Map<String, String> metadata =
                endpoint != null
                    ? Collections.singletonMap(
                        endpoint.id(), ClusterMetadataCodec.encodeMetadata(endpoint))
                    : Collections.emptyMap();
  
            ClusterConfig clusterConfig = copyFrom(this.clusterConfig).addMetadata(metadata).build();
            ScalecubeServiceDiscovery serviceDiscovery =
                new ScalecubeServiceDiscovery(this, clusterConfig);
  
            return Cluster.join(clusterConfig)
                .doOnSuccess(cluster -> serviceDiscovery.cluster = cluster)
                .thenReturn(serviceDiscovery);
          });
    }