@Ian that is great. it seems that this is the reason why there are completable futures. from architectural view, that is very reasonable.
but it can lead to a deadlock: during server-side page-building call .get on some completablefuture ⇒ waits for the websocket to be established ⇒ waits for the page to be build and delivered ⇒ waits for the websocket ....