std.http.Client.fetch uses .? that causes panic. Is this a bug or intentional for any reasons?

The bug isn’t in the dereference. Whenever a reader implementation hits an error it’s supposed to set it’s error field(body_err in this case), then return the generic error.ReadFailed. The user’s should be able to retrieve the real error from there.
At least that’s the current pattern that’s used by writers/readers
There are a couple instances where that doesn’t appear to happen, but i’m not 100% that’s the problem.
1, 2

Do you have the full error trace?