                 }
             }
             
-            switch self.machine.state {
-                case .Fulfilled:
-                    fulfill(self.value!)
-                case .Rejected:
-                    let errorInfo = self.errorInfo!
-                    bind(errorInfo)
-                default:
-                    self.machine.addEventHandler(.Progress) { context in
-                        if let (_, progressValue) = context.userInfo as? Task.ProgressTuple {
-                            progress(progressValue)
-                        }
-                    }
-                    self.machine.addEventHandler(.Fulfill) { context in
-                        if let value = context.userInfo as? Value {
-                            fulfill(value)
-                        }
-                    }
-                    self.machine.addEventHandler(.Reject) { context in
-                        if let errorInfo = context.userInfo as? ErrorInfo {
-                            bind(errorInfo)
-                        }
-                    }
+            if let self_ = self {
+                switch self_.machine.state {
+                    case .Fulfilled:
+                        fulfill(self_.value!)
+                    case .Rejected:
+                        let errorInfo = self_.errorInfo!
+                        bind(errorInfo)
+                    default:
+                        self_.machine.addEventHandler(.Progress) { context in
+                            if let (_, progressValue) = context.userInfo as? Task.ProgressTuple {
+                                progress(progressValue)
+                            }
+                        }
+                        self_.machine.addEventHandler(.Fulfill) { context in
+                            if let value = context.userInfo as? Value {
+                                fulfill(value)
+                            }
+                        }
+                        self_.machine.addEventHandler(.Reject) { context in
+                            if let errorInfo = context.userInfo as? ErrorInfo {
+                                bind(errorInfo)
+                            }
+                        }
+                }
             }
             
         }

    /// NOTE: _initClosure has _RejectHandler as argument
    internal init(weakified: Bool = false, _initClosure: _InitClosure)
    {
        self._weakified = weakified
        self._initClosure = _initClosure
        
        super.init()
        self.setup(weakified, _initClosure)
    }
    

                }
            }
            
            if let self_ = self {
                switch self_.machine.state {
                    case .Fulfilled:
                        bind(self_.value!)
                    case .Rejected:
                        _reject(self_.errorInfo!)
                    default:
                        self_.machine.addEventHandler(.Progress) { context in
                            if let (_, progressValue) = context.userInfo as? Task<Progress2, Value2, Error>.ProgressTuple {
                                progress(progressValue)
                            }
                        }
                        self_.machine.addEventHandler(.Fulfill) { context in
                            if let value = context.userInfo as? Value {
                                bind(value)
                            }
                        }
                        self_.machine.addEventHandler(.Reject) { context in
                            if let errorInfo = context.userInfo as? ErrorInfo {
                                _reject(errorInfo)
                            }
                        }
                }
            }
            
        }
