@@ -162,7 +162,7 @@ async function doHandleFetch(
162162 parsed ,
163163 response . rawHeaders
164164 ) ;
165- await handleCookies ( context , parsed , responseHeaders ) ;
165+ await handleCookies ( handler , context , parsed , responseHeaders ) ;
166166
167167 if ( isRedirect ( response ) ) {
168168 const redirectUrl = new URL (
@@ -446,24 +446,30 @@ async function handleBlobOrDataUrlFetch(
446446}
447447
448448async function handleCookies (
449+ handler : ScramjetFetchHandler ,
449450 context : ScramjetFetchContext ,
450451 parsed : ScramjetFetchParsed ,
451452 responseHeaders : BareHeaders
452453) {
453454 const maybeHeaders = responseHeaders [ "set-cookie" ] || [ ] ;
454- // if (Array.isArray(maybeHeaders))
455- // for (const cookie in maybeHeaders) {
456- // if (client) {
457- // const promise = swtarget.dispatch(client, {
458- // scramjet$type: "cookie",
459- // cookie,
460- // url: url.href,
461- // });
462- // if (destination !== "document" && destination !== "iframe") {
463- // await promise;
464- // }
465- // }
466- // }
455+ if ( Array . isArray ( maybeHeaders ) ) {
456+ for ( const cookie of maybeHeaders ) {
457+ const promise = handler . sendClientbound ( "setCookie" , {
458+ cookie,
459+ url : parsed . url . href ,
460+ } ) ;
461+
462+ if (
463+ context . destination !== "document" &&
464+ context . destination !== "iframe"
465+ ) {
466+ await promise ;
467+
468+ // TODO: fix with proper callback from client
469+ await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) ) ;
470+ }
471+ }
472+ }
467473
468474 context . cookieStore . setCookies (
469475 maybeHeaders instanceof Array ? maybeHeaders : [ maybeHeaders ] ,
0 commit comments