I'll commit this shortly, Mike Drob has already taken a look at it for me and pointed out I was missing passing a 'true' param on checking if we were in safe mode. Mistranslation when taking it from reflection compatibility code.
I've also heavily tested manually entering and exiting safe mode pretty heavily. It's much more difficult to simulate a natural safe mode situation. Given Hbase uses the code and has for a long time and the difference in using a proper (though odd), client side API (unlike the current method that depends on catching exceptions passed through a remote class), we can expect that if it works for manual safe mode, it will work for naturally entered safe mode.