I don't understand your question. Are you asking why I am checking for type? Because, at least when I was writing this part there was no checking in Server::fault() where getMessage and getCode were used. And instead of thrown Exception user could only get error message about undefined methods. Because fault is public method anyone could fault by purpose in code. Later I added a check there as well.