     
     // Here is where we extend our definition of "readiness".
     override open var isReady: Bool {
+        stateAccess.lock()
+        defer { stateAccess.unlock() }
         
         guard super.isReady else { return false }
         

            return qualityOfService == .userInitiated
        }
        set {
            assert(state < .executing, "Cannot modify userInitiated after execution has begun.")
            qualityOfService = newValue ? .userInitiated : .default
        }

        state = .evaluatingConditions
        
        OperationConditionEvaluator.evaluate(conditions, operation: self) { failures in
            self.stateAccess.lock()
            defer { self.stateAccess.unlock() }
            
            if !failures.isEmpty {
                self.cancelWithErrors(failures)
            }
