TaskCompletionSourceで作成したTask1を待つときに
SemaphoreSlim.WaitAsync(int milliSec)的な待ち方はできないでしょうか。

async void aaa(){
Task<bool> task2 = task1.....?;
if(await task2){
//task正常終了
}else{
//taskが指定ミリ秒内に終わらなかった場合
}
}