title: Fsharpx Async.AwaitObservable does not call cancellation continuation
body: <p>I'm trying to use Fsharpx' <code>Async.AwaitObservable</code> inside an async workflow which is started using <code>Async.StartWithContinuations</code>. For some reason, if the cancellation token used to start this workflow is canceled while it is waiting for the observable (but not during other parts of the workflow), the cancellation continuation is never called. However, if I put it inside a <code>use! __ = Async.OnCancel (interruption)</code>, then the interruption function does get called. Can someone please clarify why this happens and what the best way is to do this and make sure that one of the continuation functions always gets called?</p>
  
  <pre><code>open System
  open System.Reactive.Linq
  open FSharp.Control.Observable
  open System.Threading
  
  [&lt;EntryPoint&gt;]
  let main _ =
      let cancellationCapability = new CancellationTokenSource()
  
      let tick = Observable.Interval(TimeSpan.FromSeconds 1.0)
      let test = async {
          let! __ = Async.AwaitObservable tick
          printfn "Got a thing." }
  
      Async.StartWithContinuations(test,
          (fun () -&gt; printfn "Finished"),
          (fun exn -&gt; printfn "Error!"),
          (fun exn -&gt; printfn "Canceled!"),
          cancellationCapability.Token)
  
      Thread.Sleep 100
      printfn "Cancelling..."
      cancellationCapability.Cancel()
  
      Console.ReadLine() |&gt; ignore
      0 // return an integer exit code
  </code></pre>