package tache import "errors" // TacheError is a custom error type type TacheError struct { Msg string } func (e *TacheError) Error() string { return e.Msg } // NewErr creates a new TacheError func NewErr(msg string) error { return &TacheError{Msg: msg} } //var ( // ErrTaskNotFound = NewErr("task not found") // ErrTaskRunning = NewErr("task is running") //) type unrecoverableError struct { error } func (e unrecoverableError) Unwrap() error { return e.error } // Unrecoverable wraps an error in `unrecoverableError` struct func Unrecoverable(err error) error { return unrecoverableError{err} } // IsRecoverable checks if error is an instance of `unrecoverableError` func IsRecoverable(err error) bool { return !errors.Is(err, unrecoverableError{}) }