I've seen that in F# Async does never throw the OperationCancellationException inside an Async workflow, but does - if it was actually cancelled - run the finalizers.
I'm not sure what to make out of this yet, but I think that the process cancellation strategy that is used, may be simplified.
This should make cancellation more managable. Also introduces a new combinator. IVR.cancelWith that binds a "cancellation ivr" to a "body ivr" that is run when the "body ivr" gets cancelled.
I've seen that in F# Async does never throw the OperationCancellationException inside an Async workflow, but does - if it was actually cancelled - run the finalizers.
I'm not sure what to make out of this yet, but I think that the process cancellation strategy that is used, may be simplified.