rpc over socket.io, with promise