Skip to content

node:util: cancellation helper parity cut #3427

Closed

Description

@andrewtdiz

Summary

Group the Node-compatible node:util cancellation helpers into one medium PR cut. These helpers are small individually, but they share AbortSignal lifecycle behavior and should be implemented together rather than reviewed as unrelated one-off exports.

Child Issues

Intended PR Boundary

Implement the util-facing cancellation helper surface:

  • util.transferableAbortController()
  • util.transferableAbortSignal(signal)
  • util.aborted(signal, resource)
  • the minimum AbortSignal lifecycle behavior needed for those helpers to observe abort state, reason, and abort events like Node

The PR should include focused parity tests for the child issue repros and update any manifest/docs/known-failure entries it touches.

Non-goals

  • Full worker_threads structured-clone or MessagePort implementation
  • Stream pipeline abort semantics outside helper interaction
  • Unrelated node:util formatting, dotenv, debug, system-error, or MIME helper work
  • Broad AbortSignal rewrites beyond behavior required by the child issues

Acceptance

Activity

  1. andrewtdiz commented on May 30, 2026

    @andrewtdiz
    ContributorAuthor

    I’m taking this PR cut now. Scope: util.transferableAbortController(), util.transferableAbortSignal(signal), util.aborted(signal, resource), and the minimum AbortSignal lifecycle/event behavior needed to match the helper repros in #3419 and #3426. I’ll keep full worker structured-clone and broader AbortSignal static-helper work out of this PR.

  2. andrewtdiz commented on May 30, 2026

    @andrewtdiz
    ContributorAuthor

    Opened PR #3449 for this: #3449

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions