Also note that the wrapped exception is kept in its entirety, mainly to make it available for use in a case statement inside a rescue clause for so that higher level application code can treat different backend exceptions differently if it wants to.