                                 })
                                 continue
                             }
+                            
+                            guard let remoteList = readingListsByID[localID.int64Value] else {
+                                continue
+                            }
+                            
+                            localReadingListsToDelete.removeValue(forKey: localID.int64Value)
                             readingListsByID.removeValue(forKey: remoteList.id)
                             localReadingList.update(with: remoteList)
                         }

                    do {
                        let localReadingLists = try moc.fetch(localReadingListsFetchRequest)
                        var listIDsToUpdate: [(Int64, ReadingList)] = []
                        for localReadingList in localReadingLists {
                            guard let localID = localReadingList.readingListID, let remoteList = readingListsByID[localID.int64Value] else {
                                group.enter()
                                self.apiController.createList(name: localReadingList.name ?? "", description: localReadingList.readingListDescription ?? "", completion: { (listID, error) in
                                    if let listID = listID {

                                continue
                            }
                            localList.update(with: list)
                        }
                        
                        for (_, list) in localReadingListsToDelete {
                            moc.delete(list)
                        }
                        
                        guard moc.hasChanges else {
