Ну дык изначально про SwitchToThreadPool речь шла - если чекнуть в реализации IsCompleted уже ли ты на тредпуле без кастомного контекста синхронизации, если да - то тогда оверхед как от await Task.CompletedTask - без контекста синхронизации! То бишь перейди к следующему шагу сразу, никаких yield
Если нет - то в OnCompleted забиваешь на контекст синхронизации и continuation пихаешь в Task.Run