     public func map<V>(completionQueue: DispatchQueue = .global(),
                        _ transform: @escaping (ResultType) -> V) -> Promise<V, ErrorType> {
         
-        return map(completionQueue: completionQueue) { $0.map(transform) }
+        return mapResult(completionQueue: completionQueue) { $0.map(transform) }
     }
     
     public func flatMap<V>(completionQueue: DispatchQueue = .global(),

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


extension PromiseProtocol {
    
    public func mapResult<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)
