Regarding the JavaScript part: I often use small state machines to unroll deep nesting. You get a better state tracking, less nesting and easier error handling :-) You should give it a try....
And diaspora solves communicating in a horrible was. No chat (but expect it to be XMPP based), no real time, horrible tunneling of wired stuff over http.
Besides that: Most users already have XMPP accounts with friendlists. I'm eager to see how diaspora will solve that problem.
Unless you need
1. Chat
2. Friendlist (prefilled with your friends)
3. Realtime communication
4. Federation
5. Social (activity streams)
Diaspora fails on 1+2+3 and does a poor job on 4. XMPP needs implementations for 5 (spec and demo implementations exist).