         
         self._is_executing = true
 
-        let future = self.getSubFuture()
-        
-        let f : Future<Any> = future.futureAny
+        let f: Future<Any>
+        do {
+            f = try self.getSubFuture().futureAny
+        }
+        catch {
+            f = Future(fail: error)
+        }
         self.futureAny = f
         self.cancelToken = f.getCancelToken()
         f.onComplete { (value) -> Void in

        return self.promise.future.mapAs()
    }

    public init(block b: () -> Future<T>) {
        super.init(block: { () -> AnyFuture in
            return b()
        })
    }



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)
    }

