 			case .failure(let databaseError):
 				self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID })) { _ in
 					os_log(.error, log: self.log, "Send article status fetch articles error: %@.", databaseError.localizedDescription)
-					completion()
+					completion(true)
 				}
 			}
 

					return CloudKitArticleStatusUpdate(articleID: key, statuses: value, article: articlesDict[key])
				}
				
				articlesZone.modifyArticles(statusUpdates) { result in
					switch result {
					case .success:
						
						func complete() {
							// Don't clear the last one since we might have had additional ticks added
							if self.showProgress && self.refreshProgress?.numberRemaining ?? 0 > 1 {
								self.refreshProgress?.completeTask()
							}
							os_log(.debug, log: self.log, "Done sending article status block...")
							completion()
						}
						
						if statusUpdates.isEmpty {
							complete()
						} else {
							self.database.deleteSelectedForProcessing(statusUpdates.map({ $0.articleID })) { _ in
								complete()
							}
						}
						
					case .failure(let error):
						self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID })) { _ in
							self.processAccountError(account, error)
							os_log(.error, log: self.log, "Send article status modify articles error: %@.", error.localizedDescription)
							completion()
						}
					}
				}

			switch result {
			case .success(let syncStatuses):
				
				func stopProcessing() {
					if self.showProgress {
						self.refreshProgress?.completeTask()
					}
					os_log(.debug, log: self.log, "Done sending article statuses.")
					self.operationDelegate?.operationDidComplete(self)
				}
				
				guard syncStatuses.count > 0 else {
					stopProcessing()
					return
				}
				
				self.processStatuses(syncStatuses) { stop in
					if stop {
						stopProcessing()
					} else {
						self.selectForProcessing()
					}
				}
				
			case .failure(let databaseError):
				os_log(.error, log: self.log, "Send status error: %@.", databaseError.localizedDescription)
				self.operationDelegate?.cancelOperation(self)
			}
		}
	}
	
	func processStatuses(_ syncStatuses: [SyncStatus], completion: @escaping (Bool) -> Void) {
		guard let account = account, let articlesZone = articlesZone else {
			completion(true)
			return
		}
		
