BrowserWorkerRunner: port finalizer throws when the worker global has no close() (Bun)
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
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Effect-TS/effect
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
RpcServer: with disableFatalDefects, a handler that throws before returning its Effect still fails every pending callPosiblemente ocupada @effect-bot la tomó hoy. Abierto
Effect-TS/effect#9892 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Duration: ISO 8601 format/parse and a Schema codec (exact units only)Posiblemente ocupada @jayhemnani9910 la tomó hace 1 día. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
Effect-TS/effect#9888 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
HttpApiClient: `Redacted` query and header values appear in plain text in client spansPosiblemente ocupada @effect-bot la tomó hace 1 día. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
Los mantenedores suelen responder en 1 día
-
Effect.fn stack frames keep the call's arguments alive in forked fibersPosiblemente ocupada @Hona la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
Los mantenedores suelen responder en 1 día
Todos los issues de Effect-TS/effect
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
awesome-dsh-plugin/awesome-dsh-plugin#9184 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
farion1231/cc-switch#8829 ·
Los mantenedores suelen responder en 1 día
-
[core-client] Remove unused hand-maintained transport helpers after the definition-table cutoverAbiertodoc-audit enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
-
neon functions new: Next: hint says to export env vars for neon dev, but dev loads .env.localAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
neondatabase/neon-pkgs#941 ·
Los mantenedores suelen responder en 1 día