diff --git a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/threading/Waiter.kt b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/threading/Waiter.kt index b6dcdfff2e..fd5fda83a1 100644 --- a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/threading/Waiter.kt +++ b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/threading/Waiter.kt @@ -1,7 +1,6 @@ package com.onesignal.common.threading import kotlinx.coroutines.channels.Channel -import kotlinx.coroutines.runBlocking /** * An abstraction which allows for a suspending function to coordinate @@ -18,7 +17,13 @@ class Waiter { /** * Wake the suspending function that has called [waitForWake]. */ - fun wake() = runBlocking { channel.send(null) } + fun wake() { + val result = channel.trySend(null) + if (result.isFailure) { + // Most likely only happens when the chanel is misconfigured or misused + throw Exception("Waiter.wait failed", result.exceptionOrNull()) + } + } } /** @@ -40,5 +45,11 @@ open class WaiterWithValue { * * @param value The data to be returned by the [waitForWake]. */ - fun wake(value: TType) = runBlocking { channel.send(value) } + fun wake(value: TType) { + val result = channel.trySend(value) + if (result.isFailure) { + // Most likely only happens when the chanel is misconfigured or misused + throw Exception("WaiterWithValue.wait failed", result.exceptionOrNull()) + } + } }