anchor.diff:            if task.Wait(timeout, cancel) && not task.IsCanceled && not task.IsFaulted
             then Some task.Result
             else None }
  +
  +#endif
positive.code:       { new IDisposable with 
            member x.Dispose() = ct.Cancel() }
  
      /// Starts a Task<'a> with the timeout and cancellationToken and
      /// returns a Async<a' option> containing the result.  If the Task does
      /// not complete in the timeout interval, or is faulted None is returned.
      static member TryAwaitTask(task:Task<_>, ?timeout, ?cancellationToken) =
        let timeout = defaultArg timeout Timeout.Infinite
        let cancel = defaultArg cancellationToken Async.DefaultCancellationToken
        async {
  
negative.code: namespace FSharp.Control
  open System
  open System.Threading
  
  // ----------------------------------------------------------------------------
  
  