Cause returns err or ctx.Err depending on if ctx is done.
A lot of the bacnet client code returns unhelpful, non-cause errors which make detecting context cancellation difficult.
This is being fixed, so if err is a context error, err is returned as-is.