public async Task Reload()
        {
            _logger.Information("Reloading runtime config");

            var newConfig = Clone();

            var json = await _loader.Load();

            if (!Json.ParseInto(json, newConfig))
            {
                _logger.Error("Failed to parse runtime config");
                return;
            }

            var validation = RuntimeConfig.GetValidator().Validate(newConfig);

            if (!validation.IsValid)
            {
                _logger.Error("Runtime config is invalid: " + validation.Errors?.FirstOrDefault());
                return;
            }

            try {
                _locker.EnterWriteLock();
                _config = newConfig;

                _logger.Information("Runtime config reloaded");
            }
            finally {
                _locker.ExitWriteLock();
            }
        }