It turns out that we want to back out on network failure whether or not this method was called before. It may be the case that we detect a network failure just before an event begins. When the event starts and the endpoint tries to send some data to its partner, we want to immediately back out with a network exception. That was not possible before.
Added try/catch for socket errors when sending in tcp_connection_obj. This should allow us to detect when the socket is closed before send, ie. by the heartbeat object, thus allowing for faster failure in certain situations.