WebSockets: closed signal not emitted when io stream is SoupIOStream
That's the case of connections created by SoupSession. In that case, if the server hasn't closed its end of the connection, we fail to shutdown the client end, because shutdown_wr_io_stream() does nothing when the io stream is not a GSocketConnection. So, for SoupIOStream we need to get the base io stream which is a GSocketConnection.