diff --git a/playwright/_impl/_stream.py b/playwright/_impl/_stream.py index 04afa48e1..ba0adb762 100644 --- a/playwright/_impl/_stream.py +++ b/playwright/_impl/_stream.py @@ -27,14 +27,16 @@ def __init__( async def save_as(self, path: Union[str, Path]) -> None: file = await self._loop.run_in_executor(None, lambda: open(path, "wb")) - while True: - binary = await self._channel.send("read", None, {"size": 1024 * 1024}) - if not binary: - break - await self._loop.run_in_executor( - None, lambda: file.write(base64.b64decode(binary)) - ) - await self._loop.run_in_executor(None, lambda: file.close()) + try: + while True: + binary = await self._channel.send("read", None, {"size": 1024 * 1024}) + if not binary: + break + await self._loop.run_in_executor( + None, lambda: file.write(base64.b64decode(binary)) + ) + finally: + await self._loop.run_in_executor(None, lambda: file.close()) async def read_all(self) -> bytes: binary = b""