File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -38,7 +38,7 @@ import {
3838 type Stream ,
3939 resource ,
4040 createSignal ,
41- call ,
41+ withResolvers ,
4242} from "effection" ;
4343
4444// K6 WebSocket types - these match k6/experimental/websockets
@@ -189,17 +189,12 @@ export function useWebSocket(
189189
190190 // Track if we've opened
191191 let isOpen = false ;
192- let openResolve : ( ( ) => void ) | null = null ;
193- let openReject : ( ( error : Error ) => void ) | null = null ;
194- const openPromise = new Promise < void > ( ( resolve , reject ) => {
195- openResolve = resolve ;
196- openReject = reject ;
197- } ) ;
192+ const opened = withResolvers < void > ( ) ;
198193
199194 // Set up event handlers using K6's callback style
200195 socket . onopen = ( ) => {
201196 isOpen = true ;
202- openResolve ?. ( ) ;
197+ opened . resolve ( ) ;
203198 } ;
204199
205200 socket . onmessage = ( event ?: K6MessageEvent ) => {
@@ -217,7 +212,7 @@ export function useWebSocket(
217212 const errorMsg = event ?. error ?? "Unknown WebSocket error" ;
218213 if ( ! isOpen ) {
219214 // Connection failed
220- openReject ?. ( new Error ( `WebSocket connection failed: ${ errorMsg } ` ) ) ;
215+ opened . reject ( new Error ( `WebSocket connection failed: ${ errorMsg } ` ) ) ;
221216 }
222217 // Note: Error during operation will close the socket,
223218 // which will close the message signal
@@ -246,7 +241,7 @@ export function useWebSocket(
246241
247242 try {
248243 // Wait for connection to open
249- yield * call ( ( ) => openPromise ) ;
244+ yield * opened . operation ;
250245
251246 // Provide the resource
252247 yield * provide ( wsResource ) ;
You can’t perform that action at this time.
0 commit comments