public Task <SyncthingContext> GetContext() { return(this.cache.GetAsync( ContextCacheKey, async context => { var generalSettings = await this.commandsFactory.Create <GetCurrentGeneralSettingsCommand>() .SetupNoCache(true) .GetAsync(); var ctx = await SyncthingContext.CreateAsync(new SyncthingApiEndpoint(generalSettings.SyncthingApiKey, generalSettings.SyncthingEndpoint)); var logger = loggerFactory.CreateLogger(typeof(SyncthingContext)); ctx.Configuration.SetErrorCallback(message => logger.LogError(message)); await this.SynchronizeDatabase(ctx); Watch(ctx); return ctx; })); }