 
 public class FutureOperation<T> : _FutureAnyOperation {
     
-    public typealias FutureOperationBlockType = () -> (Future<T>)
-
-    public class func OperationWithBlock(block b: () -> Future<T>) -> FutureOperation<T> {
+    public typealias FutureOperationBlockType = () throws -> (Future<T>)
+
+    public class func OperationWithBlock(block b: () throws -> Future<T>) -> FutureOperation<T> {
         return FutureOperation<T>(block:b)
     }
 

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

        
        self._is_executing = true

        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
