How to close Websocket properly (C++)?

Hi, i am working on a C++ client to interface with Binance Websockets.
I am opening a combined stream to receive data ("wss://stream.binance.com:9443/stream?streams=symbol0@aggTrade/symbol1@aggTrade/… )
So far so good, messages are coming in, the connection is stable and ping/pong works…

Now, i want to be nice to Binance and close my connection properly using the standardized close-handshake, however during the close handshake, a 5sec time-out runs out.
(But the websocket messages do actually stop.)

It behaves as if Binance actually closes the connection but does not complete the standardized handshake.

In my code, i do not have many options to close the connection. I can specify an exit code (1000 = normal, 1001 = going away, …) and a reason-string for which i have no specification, so i leave it empty.

I do not understand why the close-handshake does not work. The same code works for other exchanges as this is a basic and standard websocket functionality.

I neither want to to exit the connection in an unclean way nor send an invalid packet to force a termination from Binance. I simply would like the websocket-close handshake to work.

I already stepped through binance-python websockets during close, but I have not found the secret sauce there.
Do i just need to drop the tcp connection and leave Binance hanging? It does not seem good practice.