`croak` dies from the point of view of the caller. So the error shows the line that the function was called from. You use `croak` when a user provides invalid params to the function. So that the error shows the line where the function was called from, which is the more relevant line than the line where you are `croak`ing from. In this case, the line number where the `die` happened is more useful, imo.