private async Task CheckSitesAvailability(ISitesRepository sitesRepository)
        {
            Logger.LogDebug($"Checking sites availability");

            var sites = await sitesRepository.GetSitesForCheckAsync();

            IEnumerable <Task <SiteCheckResult> > tasks = sites.Select(ProcessSite);

            List <Task <SiteCheckResult> > checkTasks = tasks.ToList();

            foreach (var bucket in TasksHelper.Interleaved(checkTasks))
            {
                var t = await bucket;
                try
                {
                    var checkedSite = await t;
                    await sitesRepository.UpdateStatusAsync(checkedSite.Id, checkedSite.Status);
                }
                catch (OperationCanceledException)
                {
                }
                catch (SqlException exception)
                {
                    Logger.LogCritical($"FATAL ERROR: Database connections could not be opened: {exception.Message}");
                }
                catch (Exception exc)
                {
                    Logger.LogCritical($"FATAL ERROR: {exc.Message}");
                }
            }
        }