'Wait for all challenge results to be determined.'

def _poll_challenges(self, chall_update, best_effort, min_sleep=3, max_rounds=15):

    dom_to_check = set(chall_update.keys())
    comp_domains = set()
    rounds = 0
    while (dom_to_check and (rounds < max_rounds)):
        time.sleep(min_sleep)
        all_failed_achalls = set()
        for domain in dom_to_check:
            (comp_achalls, failed_achalls) = self._handle_check(domain, chall_update[domain])
            if (len(comp_achalls) == len(chall_update[domain])):
                comp_domains.add(domain)
            elif (not failed_achalls):
                for (achall, _) in comp_achalls:
                    chall_update[domain].remove(achall)
            elif best_effort:
                comp_domains.add(domain)
                logger.warning('Challenge    failed    for    domain    %s', domain)
            else:
                all_failed_achalls.update((updated for (_, updated) in failed_achalls))
        if all_failed_achalls:
            _report_failed_challs(all_failed_achalls)
            raise errors.FailedChallenges(all_failed_achalls)
        dom_to_check -= comp_domains
        comp_domains.clear()
        rounds += 1
