Add SocketException handling; clean up documentation with some yardoc macro magic