throw AError と throw BError があるときに E を any Error として解釈してくれるならいいんですけど、それができないなら func map<T, E: Error>(_ transform: (Element) throws E -> T) throws E -> [T] ではなく func map<T>(_ transform: (Element) throws -> T) rethrows -> [T] でないと、これまでできたことができなくなるなと。