         return self.promise.future.mapAs()
     }
 
-    public init(block b: () -> Future<T>) {
-        super.init(block: { () -> AnyFuture in
-            return b()
+    public init(block b: () throws -> Future<T>) {
+        super.init(block: { () throws -> AnyFuture in
+            return try b()
         })
     }
 

        return _is_finished
    }
    
    public init(block : () -> AnyFuture) {
        self.getSubFuture = block
        self._is_executing = false
        self._is_finished = false


public class FutureOperation<T> : _FutureAnyOperation {
    
    public typealias FutureOperationBlockType = () throws -> (Future<T>)

    public class func OperationWithBlock(block b: () throws -> Future<T>) -> FutureOperation<T> {
        return FutureOperation<T>(block:b)
    }

