The two setup acknowledgements ran the same sequence twice: accept and validate the response, handle the same two exceptions, install the peer roster, publish connected state, and complete the setup completer. Only the log line differed, plus a roster loop that skipped the already-present check. One case handles both, using the guarded add so the roster publishes idempotently for either acknowledgement.