From 4da5568125c31322506fe1e17da665ebdb09152c Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Thu, 9 Mar 2023 11:00:46 -0500 Subject: [PATCH] [Internal tests] Close MessageChannel port to prevent leak Node's MessageChannel implementation will leak if you don't explicitly close the port. This updates the enqueueTask function we use in our internal testing helpers to close the port once it's no longer needed. --- packages/internal-test-utils/enqueueTask.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/internal-test-utils/enqueueTask.js b/packages/internal-test-utils/enqueueTask.js index 99b680d5cdd17..9ddcf1d5cab53 100644 --- a/packages/internal-test-utils/enqueueTask.js +++ b/packages/internal-test-utils/enqueueTask.js @@ -11,6 +11,9 @@ const {MessageChannel} = require('node:worker_threads'); export default function enqueueTask(task: () => void): void { const channel = new MessageChannel(); - channel.port1.onmessage = task; + channel.port1.onmessage = () => { + channel.port1.close(); + task(); + }; channel.port2.postMessage(undefined); }