         })
     }
     
-    public convenience init(closure: InitClosure)
-    {
-        self.init(_closure: { (progress, fulfill, _reject: ErrorInfo -> Void, configure) in
+    public init(closure: InitClosure)
+    {
+        setup { (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)
             return
-        })
+        }
     }
     
     public convenience init(value: Value)

    }
    
    internal init(_closure: _InitClosure)
    {
        let configuration = Configuration()
        

    
    internal typealias Machine = StateMachine<TaskState, TaskEvent>
    
    internal var machine: Machine!

    public internal(set) var progress: Progress?
    public internal(set) var value: Value?
