import Combine public enum AnyError: Error { case never(Never) case failure(Error) } public enum AnyEvent { case output(Any) case completion(Subscribers.Completion) } extension Publisher where Failure == Never { public func eraseToAnyEventPublisher() -> AnyPublisher { map(AnyEvent.output) .catch { error in Just(.completion(.failure(.never(error)))) } .eraseToAnyPublisher() } } extension Publisher { public func eraseToAnyEventPublisher() -> AnyPublisher { map(AnyEvent.output) .catch { error in Just(.completion(.failure(.failure(error)))) } .eraseToAnyPublisher() } }