- a bug that was already fixed in tcpdns.c and tlsdns.c had been
left unfixed in tcp.c: we needed to check whether the socket() call
succeeds before attempting any asynchronous connection code.
this corrects a problem that occurred when uv__socket() failed
with too many open files.
- also corrected the behavior of nm_connectcb(). previously, it was
forcing synchronous execution when force_async was false. what we
want is to force asynchronous execution if force_async is true. if
force_async is false, we want it to decide based on whether we're in
the network thread.