Duplicated the logic from fatal?() (rather than calling it directly) for performance considerations