The logic of this for loop does seems tricky. 

Previously, the routine tries to sync and join into the cluster every `s.syncInterval` interval. One question: can you check the size of the cluster before trying to join? 

Why we only wait for one time now?