What question are you answering 'yes' to?
The callback is not a natural construct
According to who? It is very natural to anyone making a GUI or anything interactive for the firs time. Eventually I would try to move people to queueing up events and handling them all at the same time so that the order is easier to debug.
Coroutines are the latest silver bullet syndrome. Fundamentally you still need to synchronize and order data and that's the hard part. I don't know why students would need to do more than the classic interactive loop of:
1. get data
2. update state
3. interactive output (drawing a frame, moving a robot etc.)