(This forum cannot post long messages, so I'm posting in pieces:
Part 1)
Bluebird shock
I'm a newcomer to thinking about asynchronicity in the 'modern' JavaScript way. My previous experience was in using callbacks, and I never liked them (I invented my own array of queued callbacks for use with Ajax). They seemed to be used for the sole reason that async required some way to pause processing until the async operation completed, and functions was the only JavaScript entity that would do this (because JavaScript uses a message-processing loop similar to other stateless environments like the Windows message loop). But callbacks don't actually need to be stateless like this.
I'd like to be able to program something like this (where I've used * to indicate an async operation, % to indicate a parallel operation):
*AskUserForPassword(Pwd)
%DoInParallel:
*Delay(2 minutes)
CheckIfUserNeedsMoreTime
CancelDelay
iffail(*ValidatePwdOnPwdServer(User,Pwd,Error))
ReportError(Error); return
AcceptLogin