OkHttpClient.newWebSocket() can block on its shared TaskRunner lock for several seconds under contention. UI callbacks that invoke RelayPool.sendToRelayOrEphemeral were calling Relay.connect() inline on the main thread, producing 5s+ ANRs. Dispatch connect() through a small dedicated thread pool so callers never wait on WebSocket setup.