SetWriteDeadline of tls.Conn describes "A zero value for t means Write will not
time out. After a Write has timed out, the TLS state is corrupt and all future writes
will return the same error." but the returned value on timeout is marked Temporary
and it may be confusing.
A suggestion: https://groups.google.com/d/msg/golang-nuts/UChb8wv6gvA/9R_g4ScTMiYJ