             shouldReload = true
             return
         }
-        shouldReload = false
 
         if now {
+            shouldReload = false
             debounceCellReload {}
             self.collectionView.reloadData()
             self.collectionView.layoutIfNeeded()
         }
         else {
+            shouldReload = true
             debounceCellReload { [weak self] in
-                guard let `self` = self else { return }
-
-                self.collectionView.reloadData()
-                self.collectionView.layoutIfNeeded()
+                self?.reloadCells(now: true)
             }
         }
     }

        }
    }

    func appendUnsizedCellItems(_ items: [StreamCellItem], completion: StreamDataSource.StreamContentReady? = nil) {
        let width = view.frame.width
        blockReload()
        dataSource.calculateCellItems(items, withWidth: width) {
            var indexPaths: [IndexPath]!
            self.performBatchUpdates {
                indexPaths = self.dataSource.appendStreamCellItems(items)
                self.collectionView.insertItems(at: indexPaths)
            }
            self.unblockReload()
            self.doneLoading()
            completion?(indexPaths)
        }
    }

    func insertUnsizedCellItems(_ cellItems: [StreamCellItem], startingIndexPath: IndexPath, completion: @escaping Block = {}) {
        let width = view.frame.width
        blockReload()
        dataSource.calculateCellItems(cellItems, withWidth: width) {
            self.performBatchUpdates {
                let indexPaths = self.dataSource.insertStreamCellItems(cellItems, startingIndexPath: startingIndexPath)
                self.collectionView.insertItems(at: indexPaths)
            }
            self.unblockReload()
            completion()
        }
    }


import SwiftyUserDefaults
import DeltaCalculator
import SnapKit
import PromiseKit


// MARK: Responder Implementations
