 		_isFinished = true
 		_finishTime = Date()
 		
+		didChangeValue(forKey: #keyPath(AsyncOperation.isExecuting))
 		didChangeValue(forKey: #keyPath(AsyncOperation.isFinished))
-		didChangeValue(forKey: #keyPath(AsyncOperation.isExecuting))
 		
 		_endBackgroundTask()
 	}

	
		// Generates the KVO necessary for the queue to remove this operation. NOTE: This is necessary for the KVO to be
		// atomic - at no point will there be notifications for one property before the other is also set.
		willChangeValue(forKey: #keyPath(AsyncOperation.isExecuting))
		willChangeValue(forKey: #keyPath(AsyncOperation.isFinished))
		
		if selfLogEnabled {
			var errorString: String = ""

	
		super.cancel()
		
		willChangeValue(forKey: #keyPath(AsyncOperation.isFinished))
		willChangeValue(forKey: #keyPath(AsyncOperation.isCancelled))
		willChangeValue(forKey: #keyPath(AsyncOperation.isExecuting))
		
		if selfLogEnabled {
			var errorString: String = ""
