 		replaceArticles(with: fetchedArticles)
 	}
 
-	func cancelPendingAsyncFetches() {
-		fetchSerialNumber += 1
-		fetchRequestQueue.cancelAllRequests()
+	func fetchAndReplaceArticlesAsync() {
+		// To be called when we need to do an entire fetch, but an async delay is okay.
+		// Example: we have the Today feed selected, and the calendar day just changed.
+		cancelPendingAsyncFetches()
+		guard let timelineFetcher = timelineFetcher else {
+			emptyTheTimeline()
+			return
+		}
+		fetchUnsortedArticlesAsync(for: [timelineFetcher]) { [weak self] (articles) in
+			self?.replaceArticles(with: articles)
+		}
 	}
 
 	func fetchUnsortedArticlesSync(for representedObjects: [Any]) -> Set<Article> {

		}
	}
	
	// MARK: Fetching Articles
	
	func queueFetchAndMergeArticles() {
		fetchAndMergeArticlesQueue.add(self, #selector(fetchAndMergeArticles))
	}

		
	}
	
	func cancelPendingAsyncFetches() {
		fetchSerialNumber += 1
		fetchRequestQueue.cancelAllRequests()
	}

	func fetchAndReplaceArticlesSync() {
		// To be called when the user has made a change of selection in the sidebar.
		// It blocks the main thread, so that there’s no async delay,
