diff --git a/src/html_rewriter_wrapper.ts b/src/html_rewriter_wrapper.ts index 00164a2..67e5450 100644 --- a/src/html_rewriter_wrapper.ts +++ b/src/html_rewriter_wrapper.ts @@ -24,7 +24,7 @@ export class HTMLRewriter { response = new Response(response.body, response); } - let rewriter: RawHTMLRewriter; + let rewriter: RawHTMLRewriter | undefined; const transformStream = new TransformStream({ start: (controller) => { // Create a rewriter instance for this transformation that writes its @@ -39,10 +39,21 @@ export class HTMLRewriter { rewriter.on(selector, handlers); } }, - transform: (chunk) => rewriter.write(chunk), + transform: (chunk) => rewriter?.write(chunk), + // deno-lint-ignore require-await + async cancel() { + if (rewriter) { + rewriter.end(); + rewriter.free(); + rewriter = undefined; + } + }, flush: () => { - rewriter.end(); - rewriter.free(); + if (rewriter) { + rewriter.end(); + rewriter.free(); + rewriter = undefined; + } }, });