Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

BrowserWorkerRunner: port finalizer throws when the worker global has no close() (Bun)

Cerrado Apto para principiantes
#8,635 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@santiago-ramos-02 ya está trabajando en esto.

Desde el 30/9/2026.

  • #8636 de @santiago-ramos-02 — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
bun, typescript
Área
web-dev

Línea de trabajo

Empieza en BrowserWorkerRunner.make e inspecciona el finalizador del puerto, especialmente cómo gestiona el global del worker utilizado como puerto. Ejecuta las pruebas relevantes de workers de Bun o una suite de bun test que ejercite el código de browser worker, y confirma que el apagado ya no lanza una excepción cuando al global del worker le falta close().

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

BrowserWorkerRunner.make registers a finalizer for each port that calls port.close() unconditionally:

Effect.sync(() => {
  port.removeEventListener("message", onMsg)
  port.removeEventListener("messageerror", onMessageError)
  port.close()
})

In a dedicated worker, layer passes the worker global as the port. Bun's worker global implements postMessage and addEventListener/removeEventListener, but has no close() (Bun 1.4.2):

// worker.ts, run with `new Worker(new URL("./worker.ts", import.meta.url))` under Bun
postMessage({ hasClose: "close" in self, type: typeof (self as any).close })
// => { hasClose: false, type: "undefined" }

So when the runner shuts down in a Bun worker (for example in a bun test suite that exercises browser worker code), the finalizer throws TypeError: port.close is not a function.

The owning parent terminates the worker anyway, so skipping close() when it is missing is safe. #6680 already fixed the messageerror listener removal in the same finalizer; this is the remaining part.

Environment: @effect/[email protected], Bun 1.4.2, Windows x64. Still present on main.

Lenguaje dominante
TypeScript
Estrellas
16.7k
Forks
808
Merge medio
10 h 52 min
PR fusionados (30 d)
836

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Effect-TS/effect

Todos los issues de Effect-TS/effect

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.