in task.go [82:92]
func (t *Task[T]) WaitWithTimeout(ctx context.Context, timeout time.Duration) (T, error) {
// return immediately if task already in terminal state.
if t.finished() {
return t.result, t.err
}
ctx, cancelFunc := context.WithTimeout(ctx, timeout)
defer cancelFunc()
return t.Result(ctx)
}