I have noticed that _spUserId is assigned on dynamic pages generated by SP (default.aspx). I am using an HTML page that I have created from scratch, therefore that variable is undefined (not null).
I noticed in the code that you are checking for ID as a field name and not making a request to userdisp.aspx (which you have mentioned in one of your replies). Would be awesome if it checked for undefined and made a request if it was undefined (which I think you meant to suggest in one of your replies also).
The workaround I have done goes like so: from SPGetCurrectUser I get the userLoginName and then use that to make another call with GetUserInfo providing the userLoginName.
2 calls instead of 1 is not ideal. Therefore, I'm looking forward for the fix.