The proposed approach hangs on iOS, though not on macOS, which is fascinating in its own right. See inline comments: ```swift import SwiftUI @main struct BlockerApp: App { var body: some Scene { WindowGroup { BlockerView() } } } struct BlockerView: View { @State var count = 0 var body: some View { VStack { Text("\(count)") Button("Increment") { // tapping on the button hangs the app count += blocking { 1 } } } } } func blocking<A>(_ ƒ: @escaping () async -> A) -> A { let semafore = DispatchSemaphore(value: 0) let got = Got<A>() Task.detached(priority: .high) { got.a = await ƒ() // gets as far as this line but ƒ never returns semafore.signal() } semafore.wait() return got.a! } private class Got<A> { var a: A? } ```