public void Start() { if (!_options.ShouldRegister) { return; } _logger.LogDebug("Registration worker is starting."); Task.Factory.StartNew(async() => { try { await _discoveryClient.RegisterAsync(); } catch (UnhealthyException ex) { _isHealthy = false; _logger.LogError(ex.InnerException ?? ex, ex.Message); Restart(); } catch (TimeoutException ex) { _isHealthy = false; _logger.LogError(ex.Message); await Task.Delay(1000 * 30); Restart(); } catch (Exception ex) { _logger.LogDebug(ex.Message); throw; } }, _cts.Token); }