Hi,
I don't understand your point. Deadlines in go always result in a timeout that is a temporary error, and it can always be extended on the lower level sockets. Regardless of semantics of the word "deadline", the meaning of a deadline within go is already specified by its functionality on lower level sockets.
If you mean Go should change the word "deadline" to something else, because its American English / British English meaning does not reflect its functionality, then I'm not sure this is the right topic for that.
To elaborate on my original problem, it was that the deadline functionality in the higher level TLS socket, and only on Write(), did not reflect that of the lower level sockets. I can now see that it is documented as such. The only real probably issue is that it returns it in the same way as the lower level sockets, i.e., a net.Error implementation where Timeout() returns true and Temporary() returns true. At this level, and because the TLS state becomes corrupt, probably it should be Timeout() true and Temporary() false.
Let's not dwell on the meaning of a word and consider this purely in the context of Go and its implementation, which is an entirely unique language.
To elaborate on my requirements though, I simply need to send data to a processing endpoint as fast as possible, by filling send buffer till send blocks, and also shutdown cleanly on demand. The server receiving the data is allowed to be slow, so the send block can be a long time (minute or so) depending on time of day. The shutdown needs to be within 30 seconds as otherwise it is deemed hung and killed by service manager. Thus I needed deadline. I did solve the issue by doing the deadline in net.Conn wrapper which I passed to tls.Client, and this works perfectly.
Regards,
Jason