Как распространять исключения из задания?

From В чем разница между запуском / соединением и async / await в сопрограммах Kotlin :

запуск используется для стрельбы и забывания сопрограммы. Это похоже на начало новой темы. Если код внутри запуска заканчивается с исключением, то он рассматривается как неотображенное исключение в потоке – обычно печатается на stderr в бэкэнд-приложениях JVM и вызывается приложения Android. join используется для ожидания завершения запущенной сопрограммы и не распространяется на ее исключение. Однако разбитый дочерний сопрограмм также отменяет его родительское с соответствующим исключением.

Если join не распространяется на исключение, есть ли способ ждать завершения Job который делает?

Например, предположим, что некоторый метод библиотеки возвращает Job потому что он предположил, что его пользователи не захотят распространять исключения, но, оказывается, есть пользователь, который этого хочет; может ли этот пользователь получить его без изменения библиотеки?