We are using the method {{fail}} in a couple of places in the puppet code base to deal with the issuing of an error (it ultimately leads to a raised error). The problem with using the name {{fail}} is that it is also an alias for {{raise}} and for newcomers to the puppet code base, the unorthodox use of {{fail}} may be confusing.
The Errors module is also mixed into providers, so it gets called from there too:
{code:ruby} fail Puppet::Error, _("File paths must be fully qualified, not '%{path}'") % { path: value } {code}
Suggested name: {{raise_issue}}, and in the cases where the "raise" is optional {{optionally_raise_issue}} (when the issue is configurable as warning or error).
I agree this would be good to clean up, but we have no plans on doing this anytime soon. If anyone wants to take this issue, feel free to reopen and we can provide help in #puppet in slack.