It looks like we call reader.connectToNsqd() for every producer on every poll of lookupd, and we never disconnect from producers that lookupd doesn't respond to.
It seems like we should compare the list that lookupd returns to the list we have open, and open/close connections until we are reconciled.