In the very first tests after batching support was enabled, I ran into errors with "Failed to parse the JSON response for Batch request" but since they were very intermittent, we couldn't reliably reproduce them.
However, I ran into them again, and I noticed that they happen consistently after a "Failed API request, {"error":{"code":"ETIMEDOUT"},"retries-remaining":1}" .. I suspect this is because the generic retry handling in ApiRequest may not be working properly for BatchRequest. API args are submitted via req.form in the BatchRequest constructor. But, ApiRequest._requestCB doesn't do that .. it just calls this.request(...) and this retry for BatchRequest might not be passing along the api args. All other POST requests set this.requestOptions.form whereas BatchRequest doesn't.
I noticed this on testwiki/User:PiRSquared17/Sandbox7. But, you can reproduce this on any page by setting an artificially low timeout value for batch requests.