 
     source.notify(queue, qos: qos) {
       result in
+      if self.isDetermined { return }
       self.beginExecution()
       let transformed = result.flatMap(transform)
       do { try self.setResult(transformed) }


    source.notify(queue, qos: qos) {
      result in
      switch result
      {
      case .Value:


    source.notify(queue, qos: qos) {
      result in
      if self.isDetermined { return }
      self.beginExecution()
      switch result
      {
