     public func mapAndCatch<V>(completionQueue: DispatchQueue = .global(),
                                _ mapper: @escaping (ResultType) throws -> V) -> Promise<V, ErrorType> {
         
-        return map(completionQueue: completionQueue) { result in
+        return mapResult(completionQueue: completionQueue) { result in
             return result.mapAndCatch(mapper)
         }
     }


extension PromiseProtocol {
    
    public func map<A, B>(completionQueue: DispatchQueue = .global(),
                          _ transform: @escaping (Result<ResultType, ErrorType>) -> Promise<A, B>.Result) -> Promise<A, B> {
        
        return .new(completionQueue: completionQueue) { setter in
            self.apply(to: setter, transform: transform)

    }
    
    public func generalizeError(completionQueue: DispatchQueue = .global()) -> Promise<ResultType, AnyError> {
        return mapResult(completionQueue: completionQueue) { $0.map(AnyError.error) }
    }
    
    public func wait() -> Result<ResultType, ErrorType> {
