Waits and resets if necessary.

def wait(self, number, patience):
        """ Waits and resets if necessary. """
        # inspect indicator for our number
        waiting = int(self.client.get(self.keys.indicator)) != number

        # wait until someone announces our number
        while waiting:
            message = self.subscription.listen(patience)
            if message is None:
                # timeout beyond patience, bump and try again
                self.message('{} bumps'.format(number))
                self.bump()
                continue
            if message['type'] != 'message':
                continue  # a subscribe message

            waiting = self.keys.number(message['data']) != number

        # our turn now
        self.message('{} started'.format(number))