rejecting could call callback, and it could raise

therefore we still need to protect rejecting to prevent from
crashing the thread. discovered by crashing event_source and
blocking forever.
event_source should handle errors properly

and error_handler should take HIJACKING into consideration,
that would make things more consistent and therefore easier to
handle for event_source. add two tests to make sure it would
never deadlock and all errors are handled properly.

also, if we're signaling the mutex, that always means we are not
going to connect again. therefore whether the socket is closed or
not doesn't really matter. all we care is that it's done, and
should let go.