       case .Value(let value):
         transform(value).notify(queue, qos: qos) {
           transformed in
-          do { try self.setResult(transformed) }
+          do { try self.determine(transformed) }
           catch { /* an error here means `self` was canceled before `transform()` completed */ }
         }
 
       case .Error(let error):
-        do { try self.setResult(Result(error: error)) }
+        do { try self.determine(Result(error: error)) }
         catch { /* an error here seems irrelevant */ }
       }
     }

      if self.isDetermined { return }
      self.beginExecution()
      let transformed = result.flatMap(transform)
      do { try self.setResult(transformed) }
      catch { /* an error here means `self` was canceled before `transform()` completed */ }
    }
  }


    let block = createBlock(qos) {
      let result = Result<T> { try task() }
      do {  try self.determine(result) }
      catch { /* an error here means this `Deferred` was canceled before `task()` was complete. */ }
    }

