/// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private async Task RequestMoreCrawlDescriptions()
        {
            PipelinedCrawlDescription pipelinedCrawlDescription = _pipeline.Drain();

            while (!pipelinedCrawlDescription.CrawlDescriptions.Any())
            {
                int delay = (int)(pipelinedCrawlDescription.NextAvailability - DateTime.Now).TotalMilliseconds;

                Log.Information("No Crawl Descriptions Available. Draining again in {0}ms.", (delay < 0) ? 0 : delay);
                if (delay > 0)
                {
                    await Task.Delay(delay);
                }

                pipelinedCrawlDescription = _pipeline.Drain();
            }

            foreach (CrawlDescription crawl in pipelinedCrawlDescription.CrawlDescriptions)
            {
                _queue.Enqueue(crawl);
            }
        }