Для того чтобы отмена асинхронной операции имела смысл, эта операция должна выполнять дискретные шаги, поскольку она выполняет операцию проверки токена отмены и прекращает свое продолжение. То есть токен отмены - это просто шаблон для реализации, а не механизм async / await.
Что это означает, что если ваша асинхронная операция представляет собой всего лишь один вызов ввода-вывода с дескриптором завершения, вы также можете просто отказаться, а не отменить, поскольку у операции не будет возможности проверить свой токен до этого вызов возвращается, и в этот момент нечего получить.
Таким образом, при рассмотрении токена отмены, прежде всего, подумайте, можно ли сделать эту операцию более эффективной, поддерживая отмену, или имеет больше смысла просто не ждать ее завершения (т.е. вместо этого использовать механизм тайм-аута).