Если это функция приостановки, она, безусловно, будет вызываться только из сопрограмм.
Что касается необходимости вызова ее в области ввода-вывода, вы могли бы просто установить диспетчер ввода-вывода самостоятельно :
suspend fun f() = withContext(Dispatchers.IO) { ... }
... или, если вы действительно хотели бы просто отклонить любого пользователя, который не использовал диспетчер ввода-вывода, вы могли бы написать require(coroutineContext[CoroutineInterceptor] == Dispatchers.IO)
, но я бы конечно, это очень странно для пользователя.