Further whittling down, the compiler crash still occurs if waitTillPaired() is simplified to:
func waitTillPaired() async throws {
lazy var stateChanges = await self.state.obtainSubscription().makeAsyncIterator()
let state = await stateChanges.next()
}
The code compiles correctly if I remove lazy or if I change AsyncState from actor to class.
So this may be an edge case with lazy evaluation of actor owned instance variables.