private RegisteredBackend ResolveBackend(string serviceIdentifier, CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { if (this.backendEndpointIds.TryGetValue(serviceIdentifier, out var backendEndpointIds)) { if (backendEndpointIds.TryDequeue(out string backendIdentifier)) { backendEndpointIds.Enqueue(backendIdentifier); if (this.backendEndpoints.TryGetValue(backendIdentifier, out RegisteredBackend candidateBackend) && candidateBackend.IsConnected) { return(this.backendEndpoints[backendIdentifier]); } } } } return(null); }