     
     public typealias ResultType = Result<T>
     
-    
     private let operation: ( @escaping (ResultType) -> ()) -> ()
-
     
     public init(_ result: ResultType) {
         self.init { $0(result) }

        self.operation = operation
    }
    
    
    fileprivate func then(_ completion: @escaping (ResultType) -> ()) {
        self.operation() { completion($0) }
    }
    
    
    public func subscribe(onNext: @escaping (T) -> Void = { _ in }, onError: @escaping (Error) -> Void = { _ in }) {
        self.then { result in

            }
        }
    }
    
}

extension Future {
    
    public func map<U>(_ f: @escaping (T) throws -> U) -> Future<U> {
        return Future<U> { completion in
            self.then { result in
