Description
Currently, cancellation tokens are registered to set the IOperation to canceled in multiple spots, which is inefficient, disorganized, and causes excess heap allocations.
Additionally, they don't current follow the RFC for Ambiguous vs Unambiguous timeouts. They also have confusing handling regarding external cancellation versus timeout cancellation.
Proposed behavior: https://gist.github.com/brantburnett/7a562876b1d53015310ce38b69da18d7