Thanks Roy. I was just trying to understand someone else's code, but in the end it turns out that this was just a bug.
What weirded me out was how injecting a print statement preventing the error from occurring, but now I get it. Without blocking, the connection handshake occurs in parallel after the connect_exc method is called. In my example, my processor reaches the send call before the connection manages to complete in the background. However, if you stick in a print statement after the connect_exc call and before the send call, it delays processing just long enough for the connection to complete, thus no exception is thrown by the send call. -- http://mail.python.org/mailman/listinfo/python-list