     {
         self.init(_closure: { (progress, fulfill, _reject: ErrorInfo -> Void, configure) in
             // NOTE: don't expose rejectHandler with ErrorInfo (isCancelled) for public init
-            closure(progress: progress, fulfill: fulfill, reject: { (error: Error?) in _reject(ErrorInfo(error: error, isCancelled: false)) }, configure: &configure)
+            closure(progress: progress, fulfill: fulfill, reject: { (error: Error?) in _reject(ErrorInfo(error: error, isCancelled: false)) }, configure: configure)
             return
         })
     }

            self.machine <-! (.Reject, errorInfo)  // NOTE: capture self
            return
        }

        _closure(progress: progressHandler, fulfill: fulfillHandler, _reject: rejectHandler, configure: &configureHandler)
    }
    
//    deinit

    {
        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:
                    let errorInfo = self!.errorInfo!
                    bind(errorInfo)
                default:
                    self!.machine.addEventHandler(.Fulfill) { context in
                        if let value = context.userInfo as? Value {
