         self.init(initClosure: { progress, fulfill, reject, configure in
             promiseInitClosure(fulfill: fulfill, reject: { error in reject(error) })
         })
+    }
+    
+    ///
+    /// creates rejected task with ErrorInfo
+    ///
+    /// - e.g. Task<P, V, E>(errorInfo: someErrorInfo)
+    ///
+    internal convenience init(errorInfo: ErrorInfo)
+    {
+        self.init(_initClosure: { machine, progress, fulfill, _reject, configure in
+            _reject(errorInfo)
+        })
+        
+        self.name = "RejectedTask"
     }
     
     /// internal-init for accessing `machine` inside `_initClosure`

        }.name("\(self.name)-success")
    }
    
    ///
    /// failure (rejected or cancelled) + closure returning **value**
    ///

    }
    
    ///
    /// success (fulfilled) + closure returning nothing
    /// used as transpalent (i.e. it doesn't affect passed Task) handler.
    ///
    /// - e.g. task.success { value -> Void in ... }
    ///
    public func success(successClosure: Value -> Void) -> Task
    {
        var dummyCanceller: Canceller? = nil
        return self.success(&dummyCanceller, successClosure)
    }
    
    public func success<C: Canceller>(inout canceller: C?, _ successClosure: Value -> Void) -> Task
    {
        return self.success(&canceller) { (value: Value) -> Task in
            return Task(value: value)
        }
    }
    
    ///
    /// success (fulfilled) + closure returning **value**
    ///
    /// - e.g. task.success { value -> NextValueType in ... }
