refuse

With no offer/answer to carry a rejection, ending your candidates without ever having sent one is how a peer says no. This checks both halves of that: Conn fires refused and closes when it happens, and does not when the trailing null arrives after real candidates — which is the normal end of gathering and must stay harmless. Needs no server.