implement similar lifecycle for socks sessions as for socks server

Similar ideas to:
https://github.com/uProxy/uproxy-networking/pull/137

A SOCKS session lives as long as its TCP connection and datachannel.
I think you need to include the peer-connection onceReady promise in between the above like it was before or else there is a race condition that you might start an auth handshake too soon.