diff --git a/pkg/utils/try.go b/pkg/utils/try.go index 2339520..7b46d98 100644 --- a/pkg/utils/try.go +++ b/pkg/utils/try.go @@ -25,3 +25,27 @@ func (c *TryChain[T, V]) Or(callback func() (T, V)) *TryChain[T, V] { func (c *TryChain[T, V]) Done() (T, V) { return c.result, c.error } + +type TryChainErr struct { + err error +} + +func NewTryErr() *TryChainErr { + return &TryChainErr{} +} + +func (c *TryChainErr) Try(callback func() error) *TryChainErr { + c.err = callback() + return c +} + +func (c *TryChainErr) Or(callback func() error) *TryChainErr { + if c.err == nil { + return c + } + return c.Try(callback) +} + +func (c *TryChainErr) Done() error { + return c.err +}