Rustler actually wraps the NIF and passes the exception back to the caller
> The library provides facilities for generating the boilerplate for interacting with the BEAM, handles encoding and decoding of Erlang terms, and catches rust panics before they unwind into C.