title: How to cancel subscription of the original stream after timeout in Dart?
body: <p>I have a broadcast stream that I subscribe to it with the timeout:</p>
  <pre><code>final s = originBroadcast.timeout(timeout, onTimeout: (sink) =&gt; sink.close());
  await for (final event in s) {
    ...
  }
  </code></pre>
  <p>The problem is that <code>timeout()</code> creates another stream (<code>s</code>), and when I unsubscribe or timeout appeared, it doesn't cancel the original stream (<code>originBroadcast</code>). Is it possible to do this?</p>