**BUG REPORT** Currently in SyncSend, retries are only worked when there is a network error, but not for common errors such as Broker busy ```golang res, _err := p.client.InvokeSync(ctx, addr, p.buildSendRequest(mq, msg), 3*time.Second) if _err != nil { err = _err continue } return p.client.ProcessSendResponse(mq.BrokerName, res, resp, msg) ``` In [java SDK](https://github.com/apache/rocketmq/blob/dcf7ccdd9ba92c22a44cde4c1df36c4d1ef6a172/client/src/main/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerImpl.java#LL615C17-L615C17), It will retry for `broker_busy`、`servicce not available` and so on. And It will select a different broker to retry. **This is very helpful in a multi-Broker cluster, so I think it is necessary to fix this problem.**