title: How to proper cancel CoroutineWorker
body: <p>I've a CoroutineWorker that need to start and stop when user interact with my app, so I use the <em>awaitCancelation()</em> method, like this:</p>
  <pre><code>override suspend fun doWork(): Result {
          try {
              startListen()
              awaitCancellation()
          } finally {
              stopListen()
              return Result.success()
          }
      }
  </code></pre>
  <p>All works fine, but when I call <em>WorkManager.cancel</em> and cancel my job, an internal exception is thrown by the WorkerWrapper:</p>
  <pre><code>I/WM-WorkerWrapper: Work [ id=721c463b-15aa-4daa-988d-a4c080915443, tags={ br.com.example.app.workers.MyWorker, WORKER_TAG } ] was cancelled
      java.util.concurrent.CancellationException: Task was cancelled.
          at androidx.work.impl.utils.futures.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1184)
          at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:514)
          at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
          at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:300)
          at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
          at java.lang.Thread.run(Thread.java:923)
  </code></pre>
  <p>I didn'd find any other way that looks more properly to stop my CoroutineWorker at the same I dont feel that is the right way to stop it.</p>
  <p>If anyone knows another way to avoid this or to supress this exception, I'd appreciate.</p>