     }
 
     func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
-        logFeedImpression()
+        logFeedImpressionAfterDelay()
     }
 
     // MARK: - Event logging
 
-    private func logFeedImpression() {
+    private func logFeedImpressionAfterDelay() {
+        NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(logFeedImpression), object: nil)
+        perform(#selector(logFeedImpression), with: self, afterDelay: 3)
+    }
+
+    @objc private func logFeedImpression() {
         guard let fetchedResultsController = fetchedResultsController else {
             return
         }

        showOfflineEmptyViewIfNeeded()
        imageScaleTransitionView = nil
        detailTransitionSourceRect = nil
        logFeedImpression()
    }
    
    override func viewWillHaveFirstAppearance(_ animated: Bool) {


    deinit {
        NotificationCenter.default.removeObserver(self)
        NSObject.cancelPreviousPerformRequests(withTarget: self)
    }
    
    
