package errs

import (
	"errors"
	"fmt"
)

func RetriableErrorf(format string, a ...any) error {
	return &RetriableError{fmt.Errorf(format, a...)}
}

func RetriableErrorNew(err error) error {
	return &RetriableError{err}
}

func AsRetriableError(err error) (*RetriableError, bool) {
	rerr := &RetriableError{}
	is := errors.As(err, &rerr)
	return rerr, is
}

type RetriableError struct {
	Reason error
}

func (e *RetriableError) Error() string {
	return e.Reason.Error()
}
