From 33c31f87e50f0adcdba9cda2db96ce73799d0e0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Siwi=C5=84ski?= Date: Wed, 18 Feb 2026 11:22:04 +0100 Subject: [PATCH] fix: register image listener before sending request to prevent race condition The listener for image responses was registered after sending the request via WebSocket. If the server responded before the listener was set up, the response was lost and the SDK would poll for 300s until timeout. This moves listenToImages() before send() so the listener is always ready to catch the response. In the webhook code path, the listener is destroyed immediately since it's not needed. --- runware/base.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/runware/base.py b/runware/base.py index 8a72115..5e1b138 100644 --- a/runware/base.py +++ b/runware/base.py @@ -595,20 +595,21 @@ async def _requestImages( "numberResults": image_remaining, } + let_lis = await self.listenToImages( + onPartialImages=on_partial_images, + taskUUID=task_uuid, + groupKey=LISTEN_TO_IMAGES_KEY.REQUEST_IMAGES, + ) + await self.send([new_request_object]) if new_request_object.get("webhookURL"): + let_lis["destroy"]() return await self._handleWebhookAcknowledgment( task_uuid=task_uuid, task_type="imageInference", debug_key="image-inference-webhook" ) - - let_lis = await self.listenToImages( - onPartialImages=on_partial_images, - taskUUID=task_uuid, - groupKey=LISTEN_TO_IMAGES_KEY.REQUEST_IMAGES, - ) images = await self.getSimililarImage( taskUUID=task_uuids, numberOfImages=number_of_images,