> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt. ## 4.23.0 **`(feat):`** XML-encoded (TwiML) types now carry inline Javadoc on their user-facing API: the class itself gets the type description, every `Builder` setter overload gets the property description, and child appenders (`say.break_(...)`, `response.say(...)`) document the child element plus `@param`/`@return`. ## 4.22.2 **`(fix):`** `RetryInterceptor` now applies the client `timeout` to each attempt individually instead of to the whole retry loop. Previously a `Retry-After` wait as long as the timeout (e.g. `Retry-After: 60` with the default 60s timeout) cancelled the call during the backoff sleep and surfaced `IOException: Canceled` instead of retrying or returning the received 429. The call timeout is paused while waiting for the backoff and restarted for each retry attempt, so a call that retries may now take up to `timeout * (maxRetries + 1)` plus the backoff waits. ## 4.22.1 **`(fix):`** Closing the root client (or `ClientOptions.close()`) now disconnects any WebSocket clients that are still connected before the SDK-owned OkHttp dispatcher is shut down, so they stop reconnecting cleanly instead of failing asynchronously with `InterruptedIOException: executor rejected`. `ClientOptions` exposes `isClosed()`; WebSocket connect/reconnect attempts made after close, as well as `OkHttpWebSocketFactory.create(...)` when constructed with a closed-check, fail fast with `IllegalStateException("root client has been closed")`.