It looks like net.Socket instances are intended to be re-used however while reading through the code I spot some potential problems:
_destroy(): doesn't wait for connect to finish
connect: doesn't first destroy if already connected, before connecting again
connect: doesn't wait for pending destroy to finish, before calling e.g. _undestroy()
Not sure if these are actual problems that need to be fixed?
@mcollina