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;
            }));
        }