using safe TrySetCancelled