Поменять сигнатуру на Do[T any](f func() (T, error)) func() (any, error) ?
тогда в чем разница с базовым экзамплом тоника?. ну тлс воткнуть