Whatever suits you best Assuming that in the second example getTehsilNames() is a suspend function, both these code samples should internally work in a similar way. Sequential code (suspend function) is usually considered to be much easier to handle than callbacks-based code, but on the other hand it requires you to learn and understand coroutines. If this is the only place where you would use coroutines then maybe it is better to go with callbacks, but if you use coroutines already, I suggest going suspend.
I agree with broot, the best solution is the one that suits you better. I have some expierence with Coroutines because Iām using Firestore Database, and all documentation associated uses Coroutines to deal with Firestore. And in my opinion, the only drawback I had was to understand how to debug a Coroutine, but after understanding Coroutines way of work, it became pretty obvious how to debug it.