public async Task WaitFutureTimeoutTest() { var task1 = new Func <Task <int> >(async() => { await Task.Delay(500); return(2); }); var task2 = new Func <Task>(async() => { await Task.Delay(500); }); var r = await AsyncUtils.WaitFutureTimeout(task1(), TimeSpan.FromMilliseconds(2000)); Assert.Equal(2, r); await AsyncUtils.WaitFutureTimeout(task2(), TimeSpan.FromMilliseconds(2000)); await Assert.ThrowsAsync <TimeoutException>(async() => await AsyncUtils.WaitFutureTimeout(task1(), TimeSpan.FromMilliseconds(100))); await Assert.ThrowsAsync <TimeoutException>(async() => await AsyncUtils.WaitFutureTimeout(task2(), TimeSpan.FromMilliseconds(100))); }