internal Task Watch(HealthCheckResource resource, CancellationToken token)
        {
            Func <HealthCheckResource, bool> filter = (k) => k.Metadata.NamespaceProperty == resource.Metadata.NamespaceProperty;

            if (!_watchers.Keys.Any(filter))
            {
                var response = _client.ListNamespacedServiceWithHttpMessagesAsync(
                    namespaceParameter: resource.Metadata.NamespaceProperty,
                    labelSelector: $"{resource.Spec.ServicesLabel}",
                    watch: true,
                    cancellationToken: token);

                var watcher = response.Watch <V1Service, V1ServiceList>(
                    onEvent: async(type, item) => await _notificationHandler.NotifyDiscoveredServiceAsync(type, item, resource),
                    onError: e =>
                {
                    _diagnostics.ServiceWatcherThrow(e);
                    Watch(resource, token);
                }
                    );

                _diagnostics.ServiceWatcherStarting(resource.Metadata.NamespaceProperty);

                _watchers.Add(resource, watcher);
            }

            return(Task.CompletedTask);
        }
        internal Task Watch(HealthCheckResource resource, CancellationToken token)
        {
            var response = _client.ListServiceForAllNamespacesWithHttpMessagesAsync(
                labelSelector: $"{resource.Spec.ServicesLabel}",
                watch: true,
                cancellationToken: token);

            _watcher = response.Watch <V1Service, V1ServiceList>(
                onEvent: async(type, item) => await _notificationHandler.NotifyDiscoveredServiceAsync(type, item, resource),
                onError: e => _diagnostics.ServiceWatcherThrow(e)
                );

            _diagnostics.ServiceWatcherStarting("All");

            return(Task.CompletedTask);
        }