'Inner loop that runs from the top anytime a command hits a
retryable Zookeeper exception.'

def _inner_acquire(self, blocking, timeout=None):

    self._session_expired = False
    self.client.add_listener(self._watch_session)
    if (not self.assured_path):
        self._ensure_path()
    if self.client.exists(self.create_path):
        return True
    with self.client.Lock(self.lock_path, self.data):
        while True:
            self.wake_event.clear()
            if self._get_lease():
                return True
            if blocking:
                self.wake_event.wait(timeout)
                if (not self.wake_event.isSet()):
                    raise LockTimeout(('Failed    to    acquire    semaphore    on    %s    after    %s    seconds' % (self.path, timeout)))
            else:
                self.client.get_children(self.path, self._get_lease)
                return False
