…intValue reported by bnagy on IRC
…to 1.2.8 Only throw a ContinuationTimeoutError if there isn't a valid return value or any other error available.
Like in ZK, do not call into the handle to get the state, instead just return the state we cache anyway. This will prevent deadlocks when things are trying to find out our state as we're closing. Also change wait_until_connected to break if we go into @_shutting_down or @_closed state, and be more accurate around the timeout value (treat it as a deadline).
only try to realize the truth there is no lock Actually, that's not true. We swap out @czk for nil, and spin up the shutdown thread to close the connection, but without holding onto the mutex. Since everything is accessing @czk through #czk, they'll get a NotConnected exception as soon as its nilled out. This reduces the chances of deadlock during a potentially hangy operation (shutdown of the underlying connection). Also, insert a hard-coded 30 second tiemout while waiting on the shutdown thread to prevent hanging forever in the case of unforseen catastrophe