I already have this wrapper for client side on iOS and working on a Batman.js version.
I usually do this for client side Login with different providers.
Say Facebook or Twitter.
Login on the client, obtain token, send to server for validation. Server validates against Facebook/Twitter.
Server will tell the client to check back in X seconds.
Client waits X seconds and does another check. Server is either done or not.
I rather do that, than to keep a request open.
It's easier to manage on iOS as well since, say the user decides to check their email while the login is still processing.