prefer `ph_panic` instead of `abort` so that we can capture both a human generated reason and a stack trace