Making it harder to swallow `error.Canceled`

I’m trying to fix error handling in tls.zig and I’d like your opinion. What do you think is the best way to indicate transport error, to be stored in conn.reader.err, using the current conventions?

  1. null (clear)
  2. error.ReadFailed (forward)
  3. error.TransportReadFailed (rename)

I’m currently of the opinion that the first option leads to the cleanest code on both sides, but maybe the third option wins because it’s the most explicit, just the code gets awkward, because the null state then basically defines illegal state.