diff --git a/lib/fetch/index.js b/lib/fetch/index.js
index 6fe6844776e..5d3bf459b5b 100644
--- a/lib/fetch/index.js
+++ b/lib/fetch/index.js
@@ -1100,6 +1100,11 @@ function fetchFinale (fetchParams, response) {
     const byteStream = new ReadableStream({
       readableStream: transformStream.readable,
       async pull (controller) {
+        // TODO(mcollina): removen this block, not sure why pull() is called twice
+        if (this.readableStream.locked) {
+          return
+        }
+
         const reader = this.readableStream.getReader()
 
         while (controller.desiredSize >= 0) {
@@ -2021,7 +2026,9 @@ async function httpNetworkFetch (
       // into stream.
       const buffer = new Uint8Array(bytes)
       if (buffer.byteLength) {
-        fetchParams.controller.controller.enqueue(buffer)
+        try {
+          fetchParams.controller.controller.enqueue(buffer)
+        } catch {}
       }
 
       // 8. If stream is errored, then terminate the ongoing fetch.
diff --git a/test/fetch/pull-dont-push.js b/test/fetch/pull-dont-push.js
index 24bad7c3923..3d4f80d3369 100644
--- a/test/fetch/pull-dont-push.js
+++ b/test/fetch/pull-dont-push.js
@@ -10,9 +10,10 @@ const { setTimeout: sleep } = require('timers/promises')
 
 const { closeServerAsPromise } = require('../utils/node-http')
 
-test('Allow the usage of custom implementation of AbortController', async (t) => {
+test('pull dont\'t push', async (t) => {
   let count = 0
   let socket
+  const max = 1_000_000
   const server = createServer((req, res) => {
     res.statusCode = 200
     socket = res.socket
@@ -21,7 +22,7 @@ test('Allow the usage of custom implementation of AbortController', async (t) =>
     const stream = new Readable({
       read () {
         this.push('a')
-        if (count++ > 1000000) {
+        if (count++ > max) {
           this.push(null)
         }
       }
@@ -42,12 +43,14 @@ test('Allow the usage of custom implementation of AbortController', async (t) =>
   // Some time is needed to fill the buffer
   await sleep(1000)
 
-  assert.strictEqual(socket.bytesWritten < 1024 * 1024, true) // 1 MB
   socket.destroy()
+  assert.strictEqual(count < max, true) // the stream should be closed before the max
 
   // consume the  stream
   try {
     /* eslint-disable-next-line no-empty, no-unused-vars */
-    for await (const chunk of res.body) {}
+    for await (const chunk of res.body) {
+      // process._rawDebug('chunk', chunk)
+    }
   } catch {}
 })
diff --git a/test/wpt/runner/runner.mjs b/test/wpt/runner/runner.mjs
index 8af9eb7c68d..4673c8fc0be 100644
--- a/test/wpt/runner/runner.mjs
+++ b/test/wpt/runner/runner.mjs
@@ -254,6 +254,7 @@ export class WPTRunner extends EventEmitter {
       this.#stats.completed += 1
 
       if (message.result.status === 1) {
+        let expectedFailure = false
         this.#stats.failed += 1
 
         wptResult?.subtests.push({
@@ -265,6 +266,7 @@ export class WPTRunner extends EventEmitter {
         const name = normalizeName(message.result.name)
 
         if (file.flaky?.includes(name)) {
+          expectedFailure = true
           this.#stats.expectedFailures += 1
         } else if (file.allowUnexpectedFailures || topLevel.allowUnexpectedFailures || file.fail?.includes(name)) {
           if (!file.allowUnexpectedFailures && !topLevel.allowUnexpectedFailures) {
@@ -274,11 +276,15 @@ export class WPTRunner extends EventEmitter {
             }
           }
 
+          expectedFailure = true
           this.#stats.expectedFailures += 1
         } else {
           process.exitCode = 1
           console.error(message.result)
         }
+        if (!expectedFailure) {
+          process._rawDebug(`Failed test: ${path}`)
+        }
       } else {
         wptResult?.subtests.push({
           status: 'PASS',