                     }
 
                     dispatch_async(dispatch_get_main_queue(), {
-                        self.posts = posts
-                        self.heightCache.removeAll()
+                        self.loadingCompletion = {
+                            self.posts = posts
+                            self.heightCache.removeAll()
+                        }
                         self.reloadTable()
                     })
                 })

                            }

                            dispatch_async(dispatch_get_main_queue(), {
                                self.posts.extend(posts)
                                self.bottomOffset += 20
                                self.reloadTable()
                            })
                        })

        if let posts = self.posts {
            for post in posts {
                if let content = post.body {
                    if let webView = self.bodyWebViewCache[post.id] {
                        return
                    }
                } else if let content = post.secondaryBody {
                    if let webView = self.secondaryBodyWebViewCache[post.id] {
                        return
                    }
                }
            }
        }

        if let completion = self.loadingCompletion {
            completion()
        }

        self.tableView.infiniteScrollingView.stopAnimating()
        if self.loadingTop || self.loadingBottom {
            self.tableView.reloadData()
        }

        self.loadingCompletion = nil
        self.loadingTop = false
        self.loadingBottom = false
    }
    
    func didLongPress(sender: UILongPressGestureRecognizer) {
