title: Issue with ClosedReceiveChannelException and Data Binding
body: <p>I'm writing a piece of code which uses Kotlin's coroutines pipilens and Androids Data Binding.</p>
  
  <p>While working i've found that when my couroutine crashes due to the 'ClosedReceiveChannelException' the bound View Model (through Data Binding) doesn't update the 'Data Bound components'. </p>
  
  <pre><code>fun onProcessStart(cachedImageId: String) = viewModelScope.launch {
      text = "Started for image: $cachedImageId"
  
      try {
          val extractedTextPipe = extractText(cachedImageId)
          val processedTextPipe = processText(extractedTextPipe)
          val processedText = processedTextPipe.receive()
          text = "Finished for image: $cachedImageId"
      } catch (t: Throwable) {
          Log.d("TEST", t.message+ " "+t)
          text = "Failed for image: $cachedImageId with code: ${t.message}"
      }
  }
  </code></pre>
  
  <p>Altough the catch is triggered and the <code>Log.d</code> is present in the logs the <code>text</code> with the new message is never updated.</p>
  
  <p>That wouldn't be a suprise if the following didn't work as well:</p>
  
  <pre><code> fun onProcessStart(cachedImageId: String) = viewModelScope.launch {
          text = "Started for image: $cachedImageId"
  
          try {
              throw IllegalStateException()
              text = "Finished for image: $cachedImageId"
          } catch (t: Throwable) {
              Log.d("TEST", t.message+ " "+t)
              text = "Failed for image: $cachedImageId with code: ${t.message}"
          }
      }
  </code></pre>
  
  <p>The above code works - the text from the <code>catch</code> is updated.</p>
  
  <p>My question is - why once the <code>val processedText = processedTextPipe.receive()</code> throws <code>ClosedReceiveChannelException</code> the <code>text</code> value stops from being updated.</p>
  
  <p>-- edit
  This issue can be also observed with the following:</p>
  
  <pre><code>  text = "Started for image: $cachedImageId"
  
      try {
          delay(10000)
          throw IllegalStateException()
      } catch (t: Throwable) {
          Log.d("TEST", t.message + " " + t + " " + Thread.currentThread().id)
          text = "Failed for image: $cachedImageId with code: ${t.message}"
      }
  </code></pre>