why `ok` here but not for `bang/cast_unreliable`? don't we lose the ability to process the return value from the caller in this case?