Skip to content

feat: support AbortSignal in native push requests - #1007

Open
rvitaliy wants to merge 1 commit into
web-push-libs:masterfrom
rvitaliy:fix/native-abort-signal
Open

rvitaliy wants to merge 1 commit into
web-push-libs:masterfrom
rvitaliy:fix/native-abort-signal

Conversation

@rvitaliy

@rvitaliy rvitaliy commented Nov 6, 2026

Copy link
Copy Markdown

Fixes #1006.

Accept options.signal, preserve it in generated request details, and forward it to the native HTTPS request and the per-request proxy agent. Forwarding it to the proxy agent also cancels a pending CONNECT handshake.

Cancellation uses Node.js's native AbortError; socket timeouts and HTTP errors retain their behavior. Custom agents remain responsible for their own connection setup. No new dependencies.

Validation on Node 22.23.4 and 26.13.0: 142 tests passed on each, including 11 new tests for cancellation, signal propagation, cleanup, success, HTTP errors, timeouts, and a stalled proxy. With the original implementation, 10 of the 11 new tests fail; the no-signal compatibility test already passes. Lint passes.

Commands:

npm run lint
npm exec -- c8 --reporter=lcov --reporter=text mocha --ui tdd --ignore test/testBrowsers.js 'test/test*'

Browser tests that deliver notifications through external push providers were not run.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support AbortSignal in sendNotification()

1 participant