It might be cleaner to separate error translation from the side-effects of `displayError` so it can be reused for both the safe/unsafe versions.