<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def update_lease_async(self, lease):
 """ Update the store with the information in the provided lease. It is necessary to currently hold a lease in order to update it. If the lease has been stolen, or expired, or released, it cannot be updated. Updating should renew the lease before performing the update to avoid lease expiration during the process. :param lease: The stored lease to be updated. :type lease: ~azure.eventprocessorhost.lease.Lease :return: `True` if the updated was performed successfully, `False` if not. :rtype: bool """

        if lease is None:
            return False

        if not lease.token:
            return False

        _logger.debug("Updating lease %r %r", self.host.guid, lease.partition_id)

        # First, renew the lease to make sure the update will go through.
        if await self.renew_lease_async(lease):
            try:
                await self.host.loop.run_in_executor(
                    self.executor,
                    functools.partial(
                        self.storage_client.create_blob_from_text,
                        self.lease_container_name,
                        lease.partition_id,
                        json.dumps(lease.serializable()),
                        lease_id=lease.token))

            except Exception as err:  # pylint: disable=broad-except
                _logger.error("Failed to update lease %r %r %r",
                              self.host.guid, lease.partition_id, err)
                raise err
        else:
            return False
        return True