IsTemporary also takes an error and does something like:
if err, ok := errors.Cause(err).(*DBError) { return err.temporary } else { return false }