async def __aexit__(self, exc_type, exc_val, exc_tb):
try:<EOL><INDENT>if self.register.replacement is not None:<EOL><INDENT>logger.debug('<STR_LIT>', self.register.replacement)<EOL>await self.store._replace(self.key, self.register.replacement)<EOL><DEDENT><DEDENT>finally:<EOL><INDENT>await self.store._finish(self.key)<EOL><DEDENT>
Whatever happened, if there is a replacement we'll store it. And even
if that fails, the lock is lifted afterwards.