     {
         let newTask = Task { [weak self] (progress, fulfill, _reject: _RejectHandler, configure) in
             
+            func bind(errorInfo: ErrorInfo)
+            {
+                let innerTask = catchClosure(errorInfo)
+                
+                innerTask.then { (value: Value) -> Void in
+                    fulfill(value)
+                }.catch { (errorInfo: ErrorInfo) -> Void in
+                    _reject(errorInfo)
+                }
+                
+                configure.pause = { innerTask.pause(); return }
+                configure.resume = { innerTask.resume(); return }
+                configure.cancel = { innerTask.cancel(); return}
+            }
+            
             switch self!.machine.state {
                 case .Fulfilled:
                     fulfill(self!.value!)
                 case .Rejected:
-                    catchClosure(self!.errorInfo!).then { (value: Value) -> Void in
-                        fulfill(value)
-                    }.catch { (errorInfo: ErrorInfo) -> Void in
-                        _reject(errorInfo)
-                    }
+                    let errorInfo = self!.errorInfo!
+                    bind(errorInfo)
                 default:
                     self!.machine.addEventHandler(.Fulfill) { context in
                         if let value = context.userInfo as? Value {

                    }
                    self!.machine.addEventHandler(.Reject) { context in
                        if let errorInfo = context.userInfo as? ErrorInfo {
                            catchClosure(errorInfo).then { (value: Value) -> Void in
                                fulfill(value)
                            }.catch { (errorInfo: ErrorInfo) -> Void in
                                _reject(errorInfo)
                            }
                        }
                    }
            }

            self.machine <-! (.Reject, errorInfo)  // NOTE: capture self
            return
        }
        
        _closure(progress: progressHandler, fulfill: fulfillHandler, _reject: rejectHandler, configure: configuration)
        
    }
    
//    deinit
