Promise также является закрытием, поэтому вам нужно сделать его @escaping
в аргументах.
Вот фиксированное расширение
extension OperationQueue {
func publisher<Output, Failure: Error>(_ block: @escaping (@escaping Future<Output, Failure>.Promise) -> Void) -> AnyPublisher<Output, Failure> {
Future<Output, Failure> { promise in
self.addOperation {
block(promise)
}
}.eraseToAnyPublisher()
}
}