         return map(on: on, flags: flags){ try $0.map(transform) }
     }
 
-    #if swift(>=4)
+    #if swift(>=4) && !swift(>=5.2)
     /**
      `Promise<[T]>` => `KeyPath<T, U>` => `Promise<[U]>`
 

        }
    }

    #if swift(>=4)
    /**
     `Promise<[T]>` => `KeyPath<T, U?>` => `Promise<[U]>`


        return rp
    }

    #if swift(>=4) && !swift(>=5.2)
    /**
    Similar to func `compactMap<U>(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T) throws -> U?) -> Promise<U>`, but accepts a key path instead of a closure.
    
