Handle SSL read timeouts as ReadTimeoutError

As reported by @sigmavirus24

Also added try/finally around event sets to avoid tests stalling on failure.