Promise-based websocket support