Pusher client using websockets (with native binding) and promises (where it makes sense).