I have refactored pretty much all of the controllers now to take in an array of dependencies - and updated the router to intiialize on new (which is much cleaner - I should do that for the client too.

So I had made a dangerous assumption - so here I record my tale:

I had thought that since objects in javascript are passed by reference that when I updated my current user in one controller it would automatically be updated in another one... but that didn't happen.

I think this is because if the object is updated, the reference is now set to the new object - because all object's value is the pointer to that object not that the object is just magically shared in all of the places.

So now the code is being prepared for propogating data between the controllers rather than sharing these critical properties.  The auth controller will be the only controller with the current user (and maybe error for logging).