Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handler.asCoroutineDispatcher() can block runBlocking() forever #2778

Closed
pyricau opened this issue Jun 21, 2021 · 1 comment
Closed

Handler.asCoroutineDispatcher() can block runBlocking() forever #2778

pyricau opened this issue Jun 21, 2021 · 1 comment
Labels

Comments

@pyricau
Copy link

pyricau commented Jun 21, 2021

Summary

CoroutineDispatcher.dispatch() kdoc says:

This method should guarantee that the given block will be eventually invoked, otherwise the system may reach a deadlock state and never leave it.

The CoroutineDispatcher instance returned by Handler.asCoroutineDispatcher() does not provide that guarantee: if the backing Handler thread has quit, Handler.post() will return false, but the dispatcher does not check for that and the coroutine does not run (source).

override fun dispatch(context: CoroutineContext, block: Runnable) {
  handler.post(block)
}

runBlocking() is an example of method that expects the coroutine dispatcher to run or cancel the coroutine, and otherwise will block forever.

Executor.asCoroutineDispatcher() implements this guarantee properly (source):

    override fun dispatch(context: CoroutineContext, block: Runnable) {
        try {
            executor.execute(wrapTask(block))
        } catch (e: RejectedExecutionException) {
            unTrackTask()
            cancelJobOnRejection(context, e)
            Dispatchers.IO.dispatch(context, block)
        }
    }

Example code

// setup
val thread = HandlerThread("stop stopping")
thread.start()
val handler = Handler(thread.looper)
val dispatcher = handler.asCoroutineDispatcher()

// Quit the thread, after this Handler.post() now returns false.
thread.quit()
// runBlocking waits for the dispatcher to run or cancel the coroutine. The current implementation does nothing.
runBlocking(dispatcher) {
  // This  never runs
}

Note: on Android, the main thread (which is a HandlerThread) never quits. However it's super common to create HandlerThread instances for single threaded work, or reuse existing instances when progressively migrating to coroutines. And it's common to quit such threads when running UI tests in CI and resetting the app in between every thread.

We ran into this edge case at Square, I posted the investigation on twitter: https://twitter.com/Piwai/status/1406301224295710720

@pyricau pyricau changed the title Handler.asCoroutineDispatcher() blocks runBlocking() if HandlerThread has quit Handler.asCoroutineDispatcher() can block runBlocking() forever Jun 21, 2021
@qwwdfsad qwwdfsad added the bug label Jun 21, 2021
@pyricau
Copy link
Author

pyricau commented Jun 21, 2021

For more context, see #2003 from which the fix was implemented for Executors.asCoroutineDispatcher (#2012)

qwwdfsad added a commit that referenced this issue Jun 22, 2021
…dler is closed in Handler.asCoroutineDispatcher()

Fixes #2778
kodiakhq bot pushed a commit to relaycorp/awala-cogrpc-jvm that referenced this issue Jul 11, 2021
Bumps `kotlinCoroutinesVersion` from 1.5.0 to 1.5.1.
Updates `kotlinx-coroutines-core` from 1.5.0 to 1.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-core's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-core's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b231887c3214187cf7f09a74073f84383a487b71"><code>b231887</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2812">#2812</a> from Kotlin/version-1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/2a4c00bd2604be9088468ca73edd2a258e089eff"><code>2a4c00b</code></a> Version 1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/69c3ce31342f6aea7602da173fa7128f017365ee"><code>69c3ce3</code></a> Update Dokka and Knit to their stable versions, remove bintray leftovers (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2811">#2811</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/f5e87400f4d11be56851a4304aa1a40fa3c09cde"><code>f5e8740</code></a> General cleanup (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2809">#2809</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/c9ab4fd21b900f66336d4d029610643c1b8839ae"><code>c9ab4fd</code></a> Update Kotlin to 1.5.20 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2810">#2810</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/bcbcd16b8c4b63478ff2ad15567688428232e928"><code>bcbcd16</code></a> Upgrade to newest Dokka and Knit (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2805">#2805</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/074cc3f79aab22a4becfad5b7595f2de6fae3db1"><code>074cc3f</code></a> Update Lincheck to 2.14 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2801">#2801</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/6cd1883fc06fb27fd8efcf907e459d05f1296102"><code>6cd1883</code></a> Cancel dispatched coroutine on Dispatchers.IO when the underlying Han… (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2784">#2784</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/a327dfb5809ef508d416a1cf98110340dcfe7430"><code>a327dfb</code></a> Remove opt-in annotation from internal MainTestDispatcher</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/e81ce210eef465d8fa0097bd6e463202b0f3e253"><code>e81ce21</code></a> Introduce Task.await and Task.asDeferred with CancellationTokenSource (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2786">#2786</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.1">compare view</a></li>
</ul>
</details>
<br />

Updates `kotlinx-coroutines-test` from 1.5.0 to 1.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-test's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-test's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b231887c3214187cf7f09a74073f84383a487b71"><code>b231887</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2812">#2812</a> from Kotlin/version-1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/2a4c00bd2604be9088468ca73edd2a258e089eff"><code>2a4c00b</code></a> Version 1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/69c3ce31342f6aea7602da173fa7128f017365ee"><code>69c3ce3</code></a> Update Dokka and Knit to their stable versions, remove bintray leftovers (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2811">#2811</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/f5e87400f4d11be56851a4304aa1a40fa3c09cde"><code>f5e8740</code></a> General cleanup (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2809">#2809</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/c9ab4fd21b900f66336d4d029610643c1b8839ae"><code>c9ab4fd</code></a> Update Kotlin to 1.5.20 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2810">#2810</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/bcbcd16b8c4b63478ff2ad15567688428232e928"><code>bcbcd16</code></a> Upgrade to newest Dokka and Knit (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2805">#2805</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/074cc3f79aab22a4becfad5b7595f2de6fae3db1"><code>074cc3f</code></a> Update Lincheck to 2.14 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2801">#2801</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/6cd1883fc06fb27fd8efcf907e459d05f1296102"><code>6cd1883</code></a> Cancel dispatched coroutine on Dispatchers.IO when the underlying Han… (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2784">#2784</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/a327dfb5809ef508d416a1cf98110340dcfe7430"><code>a327dfb</code></a> Remove opt-in annotation from internal MainTestDispatcher</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/e81ce210eef465d8fa0097bd6e463202b0f3e253"><code>e81ce21</code></a> Introduce Task.await and Task.asDeferred with CancellationTokenSource (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2786">#2786</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.1">compare view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
kodiakhq bot pushed a commit to relaycorp/awala-endpoint-android that referenced this issue Jul 11, 2021
Bumps `kotlinCoroutinesVersion` from 1.5.0 to 1.5.1.
Updates `kotlinx-coroutines-core` from 1.5.0 to 1.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-core's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-core's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b231887c3214187cf7f09a74073f84383a487b71"><code>b231887</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2812">#2812</a> from Kotlin/version-1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/2a4c00bd2604be9088468ca73edd2a258e089eff"><code>2a4c00b</code></a> Version 1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/69c3ce31342f6aea7602da173fa7128f017365ee"><code>69c3ce3</code></a> Update Dokka and Knit to their stable versions, remove bintray leftovers (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2811">#2811</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/f5e87400f4d11be56851a4304aa1a40fa3c09cde"><code>f5e8740</code></a> General cleanup (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2809">#2809</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/c9ab4fd21b900f66336d4d029610643c1b8839ae"><code>c9ab4fd</code></a> Update Kotlin to 1.5.20 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2810">#2810</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/bcbcd16b8c4b63478ff2ad15567688428232e928"><code>bcbcd16</code></a> Upgrade to newest Dokka and Knit (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2805">#2805</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/074cc3f79aab22a4becfad5b7595f2de6fae3db1"><code>074cc3f</code></a> Update Lincheck to 2.14 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2801">#2801</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/6cd1883fc06fb27fd8efcf907e459d05f1296102"><code>6cd1883</code></a> Cancel dispatched coroutine on Dispatchers.IO when the underlying Han… (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2784">#2784</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/a327dfb5809ef508d416a1cf98110340dcfe7430"><code>a327dfb</code></a> Remove opt-in annotation from internal MainTestDispatcher</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/e81ce210eef465d8fa0097bd6e463202b0f3e253"><code>e81ce21</code></a> Introduce Task.await and Task.asDeferred with CancellationTokenSource (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2786">#2786</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.1">compare view</a></li>
</ul>
</details>
<br />

Updates `kotlinx-coroutines-test` from 1.5.0 to 1.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-test's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-test's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b231887c3214187cf7f09a74073f84383a487b71"><code>b231887</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2812">#2812</a> from Kotlin/version-1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/2a4c00bd2604be9088468ca73edd2a258e089eff"><code>2a4c00b</code></a> Version 1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/69c3ce31342f6aea7602da173fa7128f017365ee"><code>69c3ce3</code></a> Update Dokka and Knit to their stable versions, remove bintray leftovers (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2811">#2811</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/f5e87400f4d11be56851a4304aa1a40fa3c09cde"><code>f5e8740</code></a> General cleanup (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2809">#2809</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/c9ab4fd21b900f66336d4d029610643c1b8839ae"><code>c9ab4fd</code></a> Update Kotlin to 1.5.20 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2810">#2810</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/bcbcd16b8c4b63478ff2ad15567688428232e928"><code>bcbcd16</code></a> Upgrade to newest Dokka and Knit (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2805">#2805</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/074cc3f79aab22a4becfad5b7595f2de6fae3db1"><code>074cc3f</code></a> Update Lincheck to 2.14 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2801">#2801</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/6cd1883fc06fb27fd8efcf907e459d05f1296102"><code>6cd1883</code></a> Cancel dispatched coroutine on Dispatchers.IO when the underlying Han… (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2784">#2784</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/a327dfb5809ef508d416a1cf98110340dcfe7430"><code>a327dfb</code></a> Remove opt-in annotation from internal MainTestDispatcher</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/e81ce210eef465d8fa0097bd6e463202b0f3e253"><code>e81ce21</code></a> Introduce Task.await and Task.asDeferred with CancellationTokenSource (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2786">#2786</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.1">compare view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
kodiakhq bot pushed a commit to relaycorp/relaynet-gateway-android that referenced this issue Jul 12, 2021
Bumps `kotlinCoroutinesVersion` from 1.4.3 to 1.5.1.
Updates `kotlinx-coroutines-core` from 1.4.3 to 1.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-core's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
<h2>1.5.0</h2>
<p>Note that this is a full changelog relative to 1.4.3 version. Changelog relative to 1.5.0-RC can be found in the end.</p>
<h3>Channels API</h3>
<ul>
<li>Major channels API rework (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/330">#330</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/974">#974</a>). Existing <code>offer</code>, <code>poll</code>, and <code>sendBlocking</code> methods are deprecated, internal <code>receiveCatching</code> and <code>onReceiveCatching</code> removed, <code>receiveOrNull</code> and <code>onReceiveOrNull</code> are completely deprecated. Previously deprecated <code>SendChannel.isFull</code> declaration is removed. Channel operators deprecated with <code>ERROR</code> are now <code>HIDDEN</code>.</li>
<li>New methods <code>receiveCatching</code>, <code>onReceiveCatching</code> <code>trySend</code>, <code>tryReceive</code>, and <code>trySendBlocking</code> along with the new result type <code>ChannelResult</code> are introduced. They provide better type safety, are less error-prone, and have a consistent future-proof naming scheme.  The full rationale behind this change can be found <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/974#issuecomment-806569582">here</a>.</li>
<li><code>BroadcastChannel</code> and <code>ConflatedBroadcastChannel</code> are marked as <code>ObsoleteCoroutinesApi</code> in the favor or <code>SharedFlow</code> and <code>StateFlow</code>. The migration scheme can be found in their documentation. These classes will be deprecated in the next major release.</li>
<li><code>callbackFlow</code> and <code>channelFlow</code> are promoted to stable API.</li>
</ul>
<h3>Reactive integrations</h3>
<ul>
<li>All existing API in modules <code>kotlinx-coroutines-rx2</code>, <code>kotlinx-coroutines-rx3</code>, <code>kotlinx-coroutines-reactive</code>, <code>kotlinx-coroutines-reactor</code>, and <code>kotlinx-coroutines-jdk9</code> were revisited and promoted to stable (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2545">#2545</a>).</li>
<li><code>publish</code> is no longer allowed to emit <code>null</code> values (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2646">#2646</a>).</li>
<li>Misleading <code>awaitSingleOr*</code> functions on <code>Publisher</code> type are deprecated (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2591">#2591</a>).</li>
<li><code>MaybeSource.await</code> is deprecated in the favor of <code>awaitSingle</code>, additional lint functions for <code>Mono</code> are added in order to prevent ambiguous <code>Publisher</code> usages (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2628">#2628</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1587">#1587</a>).</li>
<li><code>ContextView</code> support in <code>kotlinx-coroutines-reactor</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2575">#2575</a>).</li>
<li>All reactive builders no longer ignore inner cancellation exceptions preventing their completion (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2262">#2262</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2646">#2646</a>).</li>
<li><code>MaybeSource.collect</code> and <code>Maybe.collect</code> properly finish when they are completed without a value (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2617">#2617</a>).</li>
<li>All exceptions are now consistently handled according to reactive specification, whether they are considered 'fatal' or not by reactive frameworks (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2646">#2646</a>).</li>
</ul>
<h3>Other improvements</h3>
<ul>
<li>Kotlin version is upgraded to 1.5.0 and JVM target is updated to 1.8.</li>
<li><code>Flow.last</code> and <code>Flow.lastOrNull</code> operators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2246">#2246</a>).</li>
<li><code>Flow.runningFold</code> operator (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2641">#2641</a>).</li>
<li><code>CoroutinesTimeout</code> rule for JUnit5 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2197">#2197</a>).</li>
<li>Internals of <code>Job</code> and <code>AbstractCoroutine</code> was reworked, resulting in smaller code size, less memory footprint, and better performance (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2513">#2513</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2512">#2512</a>).</li>
<li><code>CancellationException</code> from Kotlin standard library is used for cancellation on Koltin/JS and Kotlin/Native (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2638">#2638</a>).</li>
<li>Introduced new <code>DelicateCoroutinesApi</code> annotation that warns users about potential target API pitfalls and suggests studying API's documentation first. The only delicate API right now is <code>GlobalScope</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2637">#2637</a>).</li>
<li>Fixed bug introduced in <code>1.4.3</code> when <code>kotlinx-coroutines-core.jar</code> triggered IDEA debugger failure (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2619">#2619</a>).</li>
<li>Fixed memory leak of <code>ChildHandlerNode</code> with reusable continuations (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2564">#2564</a>).</li>
<li>Various documentation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2555">#2555</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2589">#2589</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2592">#2592</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2583">#2583</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2437">#2437</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2616">#2616</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2633">#2633</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2560">#2560</a>).</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-core's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
<h2>Version 1.5.0</h2>
<p>Note that this is a full changelog relative to 1.4.3 version. Changelog relative to 1.5.0-RC can be found in the end.</p>
<h3>Channels API</h3>
<ul>
<li>Major channels API rework (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/330">#330</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/974">#974</a>). Existing <code>offer</code>, <code>poll</code>, and <code>sendBlocking</code> methods are deprecated, internal <code>receiveCatching</code> and <code>onReceiveCatching</code> removed, <code>receiveOrNull</code> and <code>onReceiveOrNull</code> are completely deprecated. Previously deprecated <code>SendChannel.isFull</code> declaration is removed. Channel operators deprecated with <code>ERROR</code> are now <code>HIDDEN</code>.</li>
<li>New methods <code>receiveCatching</code>, <code>onReceiveCatching</code> <code>trySend</code>, <code>tryReceive</code>, and <code>trySendBlocking</code> along with the new result type <code>ChannelResult</code> are introduced. They provide better type safety, are less error-prone, and have a consistent future-proof naming scheme.  The full rationale behind this change can be found <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/974#issuecomment-806569582">here</a>.</li>
<li><code>BroadcastChannel</code> and <code>ConflatedBroadcastChannel</code> are marked as <code>ObsoleteCoroutinesApi</code> in the favor or <code>SharedFlow</code> and <code>StateFlow</code>. The migration scheme can be found in their documentation. These classes will be deprecated in the next major release.</li>
<li><code>callbackFlow</code> and <code>channelFlow</code> are promoted to stable API.</li>
</ul>
<h3>Reactive integrations</h3>
<ul>
<li>All existing API in modules <code>kotlinx-coroutines-rx2</code>, <code>kotlinx-coroutines-rx3</code>, <code>kotlinx-coroutines-reactive</code>, <code>kotlinx-coroutines-reactor</code>, and <code>kotlinx-coroutines-jdk9</code> were revisited and promoted to stable (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2545">#2545</a>).</li>
<li><code>publish</code> is no longer allowed to emit <code>null</code> values (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2646">#2646</a>).</li>
<li>Misleading <code>awaitSingleOr*</code> functions on <code>Publisher</code> type are deprecated (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2591">#2591</a>).</li>
<li><code>MaybeSource.await</code> is deprecated in the favor of <code>awaitSingle</code>, additional lint functions for <code>Mono</code> are added in order to prevent ambiguous <code>Publisher</code> usages (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2628">#2628</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1587">#1587</a>).</li>
<li><code>ContextView</code> support in <code>kotlinx-coroutines-reactor</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2575">#2575</a>).</li>
<li>All reactive builders no longer ignore inner cancellation exceptions preventing their completion (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2262">#2262</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2646">#2646</a>).</li>
<li><code>MaybeSource.collect</code> and <code>Maybe.collect</code> properly finish when they are completed without a value (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2617">#2617</a>).</li>
<li>All exceptions are now consistently handled according to reactive specification, whether they are considered 'fatal' or not by reactive frameworks (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2646">#2646</a>).</li>
</ul>
<h3>Other improvements</h3>
<ul>
<li>Kotlin version is upgraded to 1.5.0 and JVM target is updated to 1.8.</li>
<li><code>Flow.last</code> and <code>Flow.lastOrNull</code> operators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2246">#2246</a>).</li>
<li><code>Flow.runningFold</code> operator (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2641">#2641</a>).</li>
<li><code>CoroutinesTimeout</code> rule for JUnit5 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2197">#2197</a>).</li>
<li>Internals of <code>Job</code> and <code>AbstractCoroutine</code> was reworked, resulting in smaller code size, less memory footprint, and better performance (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2513">#2513</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2512">#2512</a>).</li>
<li><code>CancellationException</code> from Kotlin standard library is used for cancellation on Koltin/JS and Kotlin/Native (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2638">#2638</a>).</li>
<li>Introduced new <code>DelicateCoroutinesApi</code> annotation that warns users about potential target API pitfalls and suggests studying API's documentation first. The only delicate API right now is <code>GlobalScope</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2637">#2637</a>).</li>
<li>Fixed bug introduced in <code>1.4.3</code> when <code>kotlinx-coroutines-core.jar</code> triggered IDEA debugger failure (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2619">#2619</a>).</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b231887c3214187cf7f09a74073f84383a487b71"><code>b231887</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2812">#2812</a> from Kotlin/version-1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/2a4c00bd2604be9088468ca73edd2a258e089eff"><code>2a4c00b</code></a> Version 1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/69c3ce31342f6aea7602da173fa7128f017365ee"><code>69c3ce3</code></a> Update Dokka and Knit to their stable versions, remove bintray leftovers (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2811">#2811</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/f5e87400f4d11be56851a4304aa1a40fa3c09cde"><code>f5e8740</code></a> General cleanup (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2809">#2809</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/c9ab4fd21b900f66336d4d029610643c1b8839ae"><code>c9ab4fd</code></a> Update Kotlin to 1.5.20 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2810">#2810</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/bcbcd16b8c4b63478ff2ad15567688428232e928"><code>bcbcd16</code></a> Upgrade to newest Dokka and Knit (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2805">#2805</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/074cc3f79aab22a4becfad5b7595f2de6fae3db1"><code>074cc3f</code></a> Update Lincheck to 2.14 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2801">#2801</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/6cd1883fc06fb27fd8efcf907e459d05f1296102"><code>6cd1883</code></a> Cancel dispatched coroutine on Dispatchers.IO when the underlying Han… (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2784">#2784</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/a327dfb5809ef508d416a1cf98110340dcfe7430"><code>a327dfb</code></a> Remove opt-in annotation from internal MainTestDispatcher</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/e81ce210eef465d8fa0097bd6e463202b0f3e253"><code>e81ce21</code></a> Introduce Task.await and Task.asDeferred with CancellationTokenSource (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2786">#2786</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.4.3...1.5.1">compare view</a></li>
</ul>
</details>
<br />

Updates `kotlinx-coroutines-test` from 1.4.3 to 1.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-test's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
<h2>1.5.0</h2>
<p>Note that this is a full changelog relative to 1.4.3 version. Changelog relative to 1.5.0-RC can be found in the end.</p>
<h3>Channels API</h3>
<ul>
<li>Major channels API rework (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/330">#330</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/974">#974</a>). Existing <code>offer</code>, <code>poll</code>, and <code>sendBlocking</code> methods are deprecated, internal <code>receiveCatching</code> and <code>onReceiveCatching</code> removed, <code>receiveOrNull</code> and <code>onReceiveOrNull</code> are completely deprecated. Previously deprecated <code>SendChannel.isFull</code> declaration is removed. Channel operators deprecated with <code>ERROR</code> are now <code>HIDDEN</code>.</li>
<li>New methods <code>receiveCatching</code>, <code>onReceiveCatching</code> <code>trySend</code>, <code>tryReceive</code>, and <code>trySendBlocking</code> along with the new result type <code>ChannelResult</code> are introduced. They provide better type safety, are less error-prone, and have a consistent future-proof naming scheme.  The full rationale behind this change can be found <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/974#issuecomment-806569582">here</a>.</li>
<li><code>BroadcastChannel</code> and <code>ConflatedBroadcastChannel</code> are marked as <code>ObsoleteCoroutinesApi</code> in the favor or <code>SharedFlow</code> and <code>StateFlow</code>. The migration scheme can be found in their documentation. These classes will be deprecated in the next major release.</li>
<li><code>callbackFlow</code> and <code>channelFlow</code> are promoted to stable API.</li>
</ul>
<h3>Reactive integrations</h3>
<ul>
<li>All existing API in modules <code>kotlinx-coroutines-rx2</code>, <code>kotlinx-coroutines-rx3</code>, <code>kotlinx-coroutines-reactive</code>, <code>kotlinx-coroutines-reactor</code>, and <code>kotlinx-coroutines-jdk9</code> were revisited and promoted to stable (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2545">#2545</a>).</li>
<li><code>publish</code> is no longer allowed to emit <code>null</code> values (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2646">#2646</a>).</li>
<li>Misleading <code>awaitSingleOr*</code> functions on <code>Publisher</code> type are deprecated (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2591">#2591</a>).</li>
<li><code>MaybeSource.await</code> is deprecated in the favor of <code>awaitSingle</code>, additional lint functions for <code>Mono</code> are added in order to prevent ambiguous <code>Publisher</code> usages (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2628">#2628</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1587">#1587</a>).</li>
<li><code>ContextView</code> support in <code>kotlinx-coroutines-reactor</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2575">#2575</a>).</li>
<li>All reactive builders no longer ignore inner cancellation exceptions preventing their completion (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2262">#2262</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2646">#2646</a>).</li>
<li><code>MaybeSource.collect</code> and <code>Maybe.collect</code> properly finish when they are completed without a value (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2617">#2617</a>).</li>
<li>All exceptions are now consistently handled according to reactive specification, whether they are considered 'fatal' or not by reactive frameworks (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2646">#2646</a>).</li>
</ul>
<h3>Other improvements</h3>
<ul>
<li>Kotlin version is upgraded to 1.5.0 and JVM target is updated to 1.8.</li>
<li><code>Flow.last</code> and <code>Flow.lastOrNull</code> operators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2246">#2246</a>).</li>
<li><code>Flow.runningFold</code> operator (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2641">#2641</a>).</li>
<li><code>CoroutinesTimeout</code> rule for JUnit5 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2197">#2197</a>).</li>
<li>Internals of <code>Job</code> and <code>AbstractCoroutine</code> was reworked, resulting in smaller code size, less memory footprint, and better performance (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2513">#2513</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2512">#2512</a>).</li>
<li><code>CancellationException</code> from Kotlin standard library is used for cancellation on Koltin/JS and Kotlin/Native (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2638">#2638</a>).</li>
<li>Introduced new <code>DelicateCoroutinesApi</code> annotation that warns users about potential target API pitfalls and suggests studying API's documentation first. The only delicate API right now is <code>GlobalScope</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2637">#2637</a>).</li>
<li>Fixed bug introduced in <code>1.4.3</code> when <code>kotlinx-coroutines-core.jar</code> triggered IDEA debugger failure (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2619">#2619</a>).</li>
<li>Fixed memory leak of <code>ChildHandlerNode</code> with reusable continuations (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2564">#2564</a>).</li>
<li>Various documentation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2555">#2555</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2589">#2589</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2592">#2592</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2583">#2583</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2437">#2437</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2616">#2616</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2633">#2633</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2560">#2560</a>).</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-test's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
<h2>Version 1.5.0</h2>
<p>Note that this is a full changelog relative to 1.4.3 version. Changelog relative to 1.5.0-RC can be found in the end.</p>
<h3>Channels API</h3>
<ul>
<li>Major channels API rework (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/330">#330</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/974">#974</a>). Existing <code>offer</code>, <code>poll</code>, and <code>sendBlocking</code> methods are deprecated, internal <code>receiveCatching</code> and <code>onReceiveCatching</code> removed, <code>receiveOrNull</code> and <code>onReceiveOrNull</code> are completely deprecated. Previously deprecated <code>SendChannel.isFull</code> declaration is removed. Channel operators deprecated with <code>ERROR</code> are now <code>HIDDEN</code>.</li>
<li>New methods <code>receiveCatching</code>, <code>onReceiveCatching</code> <code>trySend</code>, <code>tryReceive</code>, and <code>trySendBlocking</code> along with the new result type <code>ChannelResult</code> are introduced. They provide better type safety, are less error-prone, and have a consistent future-proof naming scheme.  The full rationale behind this change can be found <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/974#issuecomment-806569582">here</a>.</li>
<li><code>BroadcastChannel</code> and <code>ConflatedBroadcastChannel</code> are marked as <code>ObsoleteCoroutinesApi</code> in the favor or <code>SharedFlow</code> and <code>StateFlow</code>. The migration scheme can be found in their documentation. These classes will be deprecated in the next major release.</li>
<li><code>callbackFlow</code> and <code>channelFlow</code> are promoted to stable API.</li>
</ul>
<h3>Reactive integrations</h3>
<ul>
<li>All existing API in modules <code>kotlinx-coroutines-rx2</code>, <code>kotlinx-coroutines-rx3</code>, <code>kotlinx-coroutines-reactive</code>, <code>kotlinx-coroutines-reactor</code>, and <code>kotlinx-coroutines-jdk9</code> were revisited and promoted to stable (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2545">#2545</a>).</li>
<li><code>publish</code> is no longer allowed to emit <code>null</code> values (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2646">#2646</a>).</li>
<li>Misleading <code>awaitSingleOr*</code> functions on <code>Publisher</code> type are deprecated (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2591">#2591</a>).</li>
<li><code>MaybeSource.await</code> is deprecated in the favor of <code>awaitSingle</code>, additional lint functions for <code>Mono</code> are added in order to prevent ambiguous <code>Publisher</code> usages (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2628">#2628</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1587">#1587</a>).</li>
<li><code>ContextView</code> support in <code>kotlinx-coroutines-reactor</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2575">#2575</a>).</li>
<li>All reactive builders no longer ignore inner cancellation exceptions preventing their completion (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2262">#2262</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2646">#2646</a>).</li>
<li><code>MaybeSource.collect</code> and <code>Maybe.collect</code> properly finish when they are completed without a value (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2617">#2617</a>).</li>
<li>All exceptions are now consistently handled according to reactive specification, whether they are considered 'fatal' or not by reactive frameworks (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2646">#2646</a>).</li>
</ul>
<h3>Other improvements</h3>
<ul>
<li>Kotlin version is upgraded to 1.5.0 and JVM target is updated to 1.8.</li>
<li><code>Flow.last</code> and <code>Flow.lastOrNull</code> operators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2246">#2246</a>).</li>
<li><code>Flow.runningFold</code> operator (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2641">#2641</a>).</li>
<li><code>CoroutinesTimeout</code> rule for JUnit5 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2197">#2197</a>).</li>
<li>Internals of <code>Job</code> and <code>AbstractCoroutine</code> was reworked, resulting in smaller code size, less memory footprint, and better performance (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2513">#2513</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2512">#2512</a>).</li>
<li><code>CancellationException</code> from Kotlin standard library is used for cancellation on Koltin/JS and Kotlin/Native (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2638">#2638</a>).</li>
<li>Introduced new <code>DelicateCoroutinesApi</code> annotation that warns users about potential target API pitfalls and suggests studying API's documentation first. The only delicate API right now is <code>GlobalScope</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2637">#2637</a>).</li>
<li>Fixed bug introduced in <code>1.4.3</code> when <code>kotlinx-coroutines-core.jar</code> triggered IDEA debugger failure (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2619">#2619</a>).</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b231887c3214187cf7f09a74073f84383a487b71"><code>b231887</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2812">#2812</a> from Kotlin/version-1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/2a4c00bd2604be9088468ca73edd2a258e089eff"><code>2a4c00b</code></a> Version 1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/69c3ce31342f6aea7602da173fa7128f017365ee"><code>69c3ce3</code></a> Update Dokka and Knit to their stable versions, remove bintray leftovers (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2811">#2811</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/f5e87400f4d11be56851a4304aa1a40fa3c09cde"><code>f5e8740</code></a> General cleanup (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2809">#2809</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/c9ab4fd21b900f66336d4d029610643c1b8839ae"><code>c9ab4fd</code></a> Update Kotlin to 1.5.20 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2810">#2810</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/bcbcd16b8c4b63478ff2ad15567688428232e928"><code>bcbcd16</code></a> Upgrade to newest Dokka and Knit (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2805">#2805</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/074cc3f79aab22a4becfad5b7595f2de6fae3db1"><code>074cc3f</code></a> Update Lincheck to 2.14 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2801">#2801</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/6cd1883fc06fb27fd8efcf907e459d05f1296102"><code>6cd1883</code></a> Cancel dispatched coroutine on Dispatchers.IO when the underlying Han… (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2784">#2784</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/a327dfb5809ef508d416a1cf98110340dcfe7430"><code>a327dfb</code></a> Remove opt-in annotation from internal MainTestDispatcher</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/e81ce210eef465d8fa0097bd6e463202b0f3e253"><code>e81ce21</code></a> Introduce Task.await and Task.asDeferred with CancellationTokenSource (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2786">#2786</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.4.3...1.5.1">compare view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in the `.dependabot/config.yml` file in this repo:
- Update frequency
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)



</details>
kodiakhq bot pushed a commit to RBusarow/Tangle that referenced this issue Jul 14, 2021
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some time.

Note: if you make any changes to this PR yourself, they will take precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [kotlinx-coroutines-core](https://github.com/Kotlin/kotlinx.coroutines) from 1.5.0 to 1.5.1-native-mt.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-core's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-core's changelog</a>.</em></p>
<blockquote>
<h1>Change log for kotlinx.coroutines</h1>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/Kotlin/kotlinx.coroutines/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.jetbrains.kotlinx:kotlinx-coroutines-core&package-manager=gradle&previous-version=1.5.0&new-version=1.5.1-native-mt)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

#25
kodiakhq bot pushed a commit to RBusarow/Tangle that referenced this issue Jul 14, 2021
Bumps [kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) from 1.5.0 to 1.5.1-native-mt.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-test's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-test's changelog</a>.</em></p>
<blockquote>
<h1>Change log for kotlinx.coroutines</h1>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/Kotlin/kotlinx.coroutines/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.jetbrains.kotlinx:kotlinx-coroutines-test&package-manager=gradle&previous-version=1.5.0&new-version=1.5.1-native-mt)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

#19
kodiakhq bot pushed a commit to RBusarow/Tangle that referenced this issue Jul 14, 2021
Bumps [kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) from 1.5.0 to 1.5.1-native-mt.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-android's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-android's changelog</a>.</em></p>
<blockquote>
<h1>Change log for kotlinx.coroutines</h1>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/Kotlin/kotlinx.coroutines/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.jetbrains.kotlinx:kotlinx-coroutines-android&package-manager=gradle&previous-version=1.5.0&new-version=1.5.1-native-mt)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

#13
kodiakhq bot pushed a commit to relaycorp/doh-jvm that referenced this issue Jul 14, 2021
Bumps `kotlinCoroutinesVersion` from 1.5.0 to 1.5.1.
Updates `kotlinx-coroutines-core` from 1.5.0 to 1.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-core's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-core's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b231887c3214187cf7f09a74073f84383a487b71"><code>b231887</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2812">#2812</a> from Kotlin/version-1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/2a4c00bd2604be9088468ca73edd2a258e089eff"><code>2a4c00b</code></a> Version 1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/69c3ce31342f6aea7602da173fa7128f017365ee"><code>69c3ce3</code></a> Update Dokka and Knit to their stable versions, remove bintray leftovers (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2811">#2811</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/f5e87400f4d11be56851a4304aa1a40fa3c09cde"><code>f5e8740</code></a> General cleanup (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2809">#2809</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/c9ab4fd21b900f66336d4d029610643c1b8839ae"><code>c9ab4fd</code></a> Update Kotlin to 1.5.20 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2810">#2810</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/bcbcd16b8c4b63478ff2ad15567688428232e928"><code>bcbcd16</code></a> Upgrade to newest Dokka and Knit (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2805">#2805</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/074cc3f79aab22a4becfad5b7595f2de6fae3db1"><code>074cc3f</code></a> Update Lincheck to 2.14 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2801">#2801</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/6cd1883fc06fb27fd8efcf907e459d05f1296102"><code>6cd1883</code></a> Cancel dispatched coroutine on Dispatchers.IO when the underlying Han… (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2784">#2784</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/a327dfb5809ef508d416a1cf98110340dcfe7430"><code>a327dfb</code></a> Remove opt-in annotation from internal MainTestDispatcher</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/e81ce210eef465d8fa0097bd6e463202b0f3e253"><code>e81ce21</code></a> Introduce Task.await and Task.asDeferred with CancellationTokenSource (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2786">#2786</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.1">compare view</a></li>
</ul>
</details>
<br />

Updates `kotlinx-coroutines-test` from 1.5.0 to 1.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-test's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-test's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b231887c3214187cf7f09a74073f84383a487b71"><code>b231887</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2812">#2812</a> from Kotlin/version-1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/2a4c00bd2604be9088468ca73edd2a258e089eff"><code>2a4c00b</code></a> Version 1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/69c3ce31342f6aea7602da173fa7128f017365ee"><code>69c3ce3</code></a> Update Dokka and Knit to their stable versions, remove bintray leftovers (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2811">#2811</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/f5e87400f4d11be56851a4304aa1a40fa3c09cde"><code>f5e8740</code></a> General cleanup (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2809">#2809</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/c9ab4fd21b900f66336d4d029610643c1b8839ae"><code>c9ab4fd</code></a> Update Kotlin to 1.5.20 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2810">#2810</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/bcbcd16b8c4b63478ff2ad15567688428232e928"><code>bcbcd16</code></a> Upgrade to newest Dokka and Knit (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2805">#2805</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/074cc3f79aab22a4becfad5b7595f2de6fae3db1"><code>074cc3f</code></a> Update Lincheck to 2.14 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2801">#2801</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/6cd1883fc06fb27fd8efcf907e459d05f1296102"><code>6cd1883</code></a> Cancel dispatched coroutine on Dispatchers.IO when the underlying Han… (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2784">#2784</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/a327dfb5809ef508d416a1cf98110340dcfe7430"><code>a327dfb</code></a> Remove opt-in annotation from internal MainTestDispatcher</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/e81ce210eef465d8fa0097bd6e463202b0f3e253"><code>e81ce21</code></a> Introduce Task.await and Task.asDeferred with CancellationTokenSource (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2786">#2786</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.1">compare view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
kodiakhq bot pushed a commit to relaycorp/awala-testing-jvm that referenced this issue Jul 14, 2021
Bumps `kotlinCoroutinesVersion` from 1.5.0 to 1.5.1.
Updates `kotlinx-coroutines-core` from 1.5.0 to 1.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-core's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-core's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b231887c3214187cf7f09a74073f84383a487b71"><code>b231887</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2812">#2812</a> from Kotlin/version-1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/2a4c00bd2604be9088468ca73edd2a258e089eff"><code>2a4c00b</code></a> Version 1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/69c3ce31342f6aea7602da173fa7128f017365ee"><code>69c3ce3</code></a> Update Dokka and Knit to their stable versions, remove bintray leftovers (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2811">#2811</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/f5e87400f4d11be56851a4304aa1a40fa3c09cde"><code>f5e8740</code></a> General cleanup (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2809">#2809</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/c9ab4fd21b900f66336d4d029610643c1b8839ae"><code>c9ab4fd</code></a> Update Kotlin to 1.5.20 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2810">#2810</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/bcbcd16b8c4b63478ff2ad15567688428232e928"><code>bcbcd16</code></a> Upgrade to newest Dokka and Knit (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2805">#2805</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/074cc3f79aab22a4becfad5b7595f2de6fae3db1"><code>074cc3f</code></a> Update Lincheck to 2.14 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2801">#2801</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/6cd1883fc06fb27fd8efcf907e459d05f1296102"><code>6cd1883</code></a> Cancel dispatched coroutine on Dispatchers.IO when the underlying Han… (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2784">#2784</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/a327dfb5809ef508d416a1cf98110340dcfe7430"><code>a327dfb</code></a> Remove opt-in annotation from internal MainTestDispatcher</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/e81ce210eef465d8fa0097bd6e463202b0f3e253"><code>e81ce21</code></a> Introduce Task.await and Task.asDeferred with CancellationTokenSource (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2786">#2786</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.1">compare view</a></li>
</ul>
</details>
<br />

Updates `kotlinx-coroutines-test` from 1.5.0 to 1.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-test's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-test's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b231887c3214187cf7f09a74073f84383a487b71"><code>b231887</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2812">#2812</a> from Kotlin/version-1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/2a4c00bd2604be9088468ca73edd2a258e089eff"><code>2a4c00b</code></a> Version 1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/69c3ce31342f6aea7602da173fa7128f017365ee"><code>69c3ce3</code></a> Update Dokka and Knit to their stable versions, remove bintray leftovers (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2811">#2811</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/f5e87400f4d11be56851a4304aa1a40fa3c09cde"><code>f5e8740</code></a> General cleanup (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2809">#2809</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/c9ab4fd21b900f66336d4d029610643c1b8839ae"><code>c9ab4fd</code></a> Update Kotlin to 1.5.20 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2810">#2810</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/bcbcd16b8c4b63478ff2ad15567688428232e928"><code>bcbcd16</code></a> Upgrade to newest Dokka and Knit (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2805">#2805</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/074cc3f79aab22a4becfad5b7595f2de6fae3db1"><code>074cc3f</code></a> Update Lincheck to 2.14 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2801">#2801</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/6cd1883fc06fb27fd8efcf907e459d05f1296102"><code>6cd1883</code></a> Cancel dispatched coroutine on Dispatchers.IO when the underlying Han… (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2784">#2784</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/a327dfb5809ef508d416a1cf98110340dcfe7430"><code>a327dfb</code></a> Remove opt-in annotation from internal MainTestDispatcher</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/e81ce210eef465d8fa0097bd6e463202b0f3e253"><code>e81ce21</code></a> Introduce Task.await and Task.asDeferred with CancellationTokenSource (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2786">#2786</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.1">compare view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
kodiakhq bot pushed a commit to relaycorp/awala-jvm that referenced this issue Jul 14, 2021
Bumps `kotlinCoroutinesVersion` from 1.5.0 to 1.5.1.
Updates `kotlinx-coroutines-core` from 1.5.0 to 1.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-core's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-core's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b231887c3214187cf7f09a74073f84383a487b71"><code>b231887</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2812">#2812</a> from Kotlin/version-1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/2a4c00bd2604be9088468ca73edd2a258e089eff"><code>2a4c00b</code></a> Version 1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/69c3ce31342f6aea7602da173fa7128f017365ee"><code>69c3ce3</code></a> Update Dokka and Knit to their stable versions, remove bintray leftovers (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2811">#2811</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/f5e87400f4d11be56851a4304aa1a40fa3c09cde"><code>f5e8740</code></a> General cleanup (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2809">#2809</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/c9ab4fd21b900f66336d4d029610643c1b8839ae"><code>c9ab4fd</code></a> Update Kotlin to 1.5.20 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2810">#2810</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/bcbcd16b8c4b63478ff2ad15567688428232e928"><code>bcbcd16</code></a> Upgrade to newest Dokka and Knit (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2805">#2805</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/074cc3f79aab22a4becfad5b7595f2de6fae3db1"><code>074cc3f</code></a> Update Lincheck to 2.14 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2801">#2801</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/6cd1883fc06fb27fd8efcf907e459d05f1296102"><code>6cd1883</code></a> Cancel dispatched coroutine on Dispatchers.IO when the underlying Han… (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2784">#2784</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/a327dfb5809ef508d416a1cf98110340dcfe7430"><code>a327dfb</code></a> Remove opt-in annotation from internal MainTestDispatcher</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/e81ce210eef465d8fa0097bd6e463202b0f3e253"><code>e81ce21</code></a> Introduce Task.await and Task.asDeferred with CancellationTokenSource (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2786">#2786</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.1">compare view</a></li>
</ul>
</details>
<br />

Updates `kotlinx-coroutines-test` from 1.5.0 to 1.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-test's releases</a>.</em></p>
<blockquote>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-test's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b231887c3214187cf7f09a74073f84383a487b71"><code>b231887</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2812">#2812</a> from Kotlin/version-1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/2a4c00bd2604be9088468ca73edd2a258e089eff"><code>2a4c00b</code></a> Version 1.5.1</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/69c3ce31342f6aea7602da173fa7128f017365ee"><code>69c3ce3</code></a> Update Dokka and Knit to their stable versions, remove bintray leftovers (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2811">#2811</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/f5e87400f4d11be56851a4304aa1a40fa3c09cde"><code>f5e8740</code></a> General cleanup (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2809">#2809</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/c9ab4fd21b900f66336d4d029610643c1b8839ae"><code>c9ab4fd</code></a> Update Kotlin to 1.5.20 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2810">#2810</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/bcbcd16b8c4b63478ff2ad15567688428232e928"><code>bcbcd16</code></a> Upgrade to newest Dokka and Knit (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2805">#2805</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/074cc3f79aab22a4becfad5b7595f2de6fae3db1"><code>074cc3f</code></a> Update Lincheck to 2.14 (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2801">#2801</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/6cd1883fc06fb27fd8efcf907e459d05f1296102"><code>6cd1883</code></a> Cancel dispatched coroutine on Dispatchers.IO when the underlying Han… (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2784">#2784</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/a327dfb5809ef508d416a1cf98110340dcfe7430"><code>a327dfb</code></a> Remove opt-in annotation from internal MainTestDispatcher</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/e81ce210eef465d8fa0097bd6e463202b0f3e253"><code>e81ce21</code></a> Introduce Task.await and Task.asDeferred with CancellationTokenSource (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2786">#2786</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.1">compare view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
kodiakhq bot pushed a commit to RBusarow/Gradle-Template that referenced this issue Sep 17, 2021
Bumps [kotlinx-coroutines-core](https://github.com/Kotlin/kotlinx.coroutines) from 1.5.0 to 1.5.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/releases">kotlinx-coroutines-core's releases</a>.</em></p>
<blockquote>
<h2>1.5.2</h2>
<ul>
<li>Kotlin is updated to 1.5.30.</li>
<li>New native targets for Apple Silicon are introduced.</li>
<li>Fixed a bug when <code>onUndeliveredElement</code> was incorrectly called on properly received elements on JS (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2826">#2826</a>).</li>
<li>Fixed <code>Dispatchers.Default</code> on React Native, it now fully relies on <code>setTimeout</code> instead of stub <code>process.nextTick</code>. Thanks to <a href="https://github.com/Legion2"><code>@​Legion2</code></a> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2843">#2843</a>).</li>
<li>Optimizations of <code>Mutex</code> implementation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2581">#2581</a>).</li>
<li><code>Mutex</code> implementation is made completely lock-free as stated (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2590">#2590</a>).</li>
<li>Various documentation and guides improvements. Thanks to <a href="https://github.com/MasoodFallahpoor"><code>@​MasoodFallahpoor</code></a> and <a href="https://github.com/Pihanya"><code>@​Pihanya</code></a>.</li>
</ul>
<h2>1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">kotlinx-coroutines-core's changelog</a>.</em></p>
<blockquote>
<h2>Version 1.5.2</h2>
<ul>
<li>Kotlin is updated to 1.5.30.</li>
<li>New native targets for Apple Silicon are introduced.</li>
<li>Fixed a bug when <code>onUndeliveredElement</code> was incorrectly called on a properly received elements on JS (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2826">#2826</a>).</li>
<li>Fixed <code>Dispatchers.Default</code> on React Native, it now fully relies on <code>setTimeout</code> instead of stub <code>process.nextTick</code>. Thanks to <a href="https://github.com/Legion2"><code>@​Legion2</code></a> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2843">#2843</a>).</li>
<li>Optimizations of <code>Mutex</code> implementation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2581">#2581</a>).</li>
<li><code>Mutex</code> implementation is made completely lock-free as stated (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2590">#2590</a>).</li>
<li>Various documentation and guides improvements. Thanks to <a href="https://github.com/MasoodFallahpoor"><code>@​MasoodFallahpoor</code></a> and <a href="https://github.com/Pihanya"><code>@​Pihanya</code></a>.</li>
</ul>
<h2>Version 1.5.1</h2>
<ul>
<li>Atomic <code>update</code>, <code>getAndUpdate</code>, and <code>updateAndGet</code> operations of <code>MutableStateFlow</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2720">#2720</a>).</li>
<li><code>Executor.asCoroutineDispatcher</code> implementation improvements (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2601">#2601</a>):
<ul>
<li>If the target executor is <code>ScheduledExecutorService</code>, then its <code>schedule</code> API is used for time-related coroutine operations.</li>
<li><code>RemoveOnCancelPolicy</code> is now part of the public contract.</li>
</ul>
</li>
<li>Introduced overloads for <code>Task.asDeferred</code> and <code>Task.await</code> that accept <code>CancellationTokenSource</code> for bidirectional cancellation (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2527">#2527</a>).</li>
<li>Reactive streams are updated to <code>1.0.3</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2740">#2740</a>).</li>
<li><code>CopyableThrowable</code> is allowed to modify the exception message during stacktrace recovery (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/1931">#1931</a>).</li>
<li><code>CoroutineDispatcher.releaseInterceptedContinuation</code> is now a <code>final</code> method (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2785">#2785</a>).</li>
<li>Closing a Handler underlying <code>Handler.asCoroutineDispatcher</code> now causes the dispatched coroutines to be canceled on <code>Dispatchers.IO ([#2778](https://github.com/Kotlin/kotlinx.coroutines/issues/2778))</code>.</li>
<li>Kotlin is updated to 1.5.20.</li>
<li>Fixed a spurious <code>ClassCastException</code> in <code>releaseInterceptedContinuation</code> and <code>IllegalStateException</code> from <code>tryReleaseClaimedContinuation</code> (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2736">#2736</a>, <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2768">#2768</a>).</li>
<li>Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2749">#2749</a>).</li>
<li>Fixed linear stack usage for <code>CompletableFuture.asDeferred</code> when the target future has a long chain of listeners (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2730">#2730</a>).</li>
<li>Any exceptions from <code>CoroutineDispatcher.isDispatchNeeded</code> are now considered as fatal and are propagated to the caller (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2733">#2733</a>).</li>
<li>Internal <code>DebugProbesKt</code> (used in the debugger implementation) are moved from <code>debug</code> to <code>core</code> module.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/46c0026257cd10365d84004e1e5457de8376d080"><code>46c0026</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2904">#2904</a> from Kotlin/version-1.5.2</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/45547c068a1726d02a16a6422077285533e4deb6"><code>45547c0</code></a> Version 1.5.2</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/d3ead6fad5a9be799eb5b7d7034890888b2e9a2e"><code>d3ead6f</code></a> Merge branch 'master' into develop</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/3dcc3497ac104758989cbdedac1a8455e9989b7e"><code>3dcc349</code></a> Make supervisor samples runnable (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2897">#2897</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/dfa1b6342e4cfb5316f87cb6fc3145d172f9b436"><code>dfa1b63</code></a> Update Kotlin (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2902">#2902</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/d281a7cc15b6dcfd0e62179e6b266d5ac3e8ba3e"><code>d281a7c</code></a> update: links to android resources added to references (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2898">#2898</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/50807d0babeafddc9fa56ad6f567d8e2ef002407"><code>50807d0</code></a> Fix typo in the documentation of CompletableJob#complete (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2900">#2900</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/dbfb4aebfacc0b58da189a386a9614365ecaf643"><code>dbfb4ae</code></a> Fix the API doc of launchIn operator (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2893">#2893</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/810f28f2f852f5944b34f2f5249374349686b522"><code>810f28f</code></a> Verify that tests haven't written anything in the System.out (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2882">#2882</a>)</li>
<li><a href="https://github.com/Kotlin/kotlinx.coroutines/commit/b5679abfbcae176f9fe54d8fa9f03b1843abe6e8"><code>b5679ab</code></a> Update DebugProbesKt.bin exclusion instruction (<a href="https://github-redirect.dependabot.com/Kotlin/kotlinx.coroutines/issues/2889">#2889</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.2">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.jetbrains.kotlinx:kotlinx-coroutines-core&package-manager=gradle&previous-version=1.5.0&new-version=1.5.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

#43
pablobaxter pushed a commit to pablobaxter/kotlinx.coroutines that referenced this issue Sep 14, 2022
Kotlin#2784)

Cancel dispatched coroutine on Dispatchers.IO when the underlying Handler is closed in Handler.asCoroutineDispatcher()

Fixes Kotlin#2778
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants