Per the documentation:
This works because the call class method swallows exceptions.
Unless I'm missing something, any errors should be swallowed by call, but they're being raised for me unless I manually catch the error inside call and throw it with fail!