in task.go [60:78]
func (t *Task[T]) Wait(ctx context.Context) error {
// return immediately if task already in terminal state.
if t.finished() {
return t.err
}
ch := make(chan any)
go func() {
t.waitGroup.Wait()
close(ch)
}()
select {
case <-ch:
return t.err
case <-ctx.Done():
return ctx.Err()
}
}