• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

archetech / archon / 32515030803
87%

Build:
DEFAULT BRANCH: main
Ran 21 Aug 2026 06:49PM UTC
Jobs 1
Files 89
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

21 Aug 2026 06:46PM UTC coverage: 94.076% (+0.003%) from 94.073%
32515030803

push

github

web-flow
fix: Send SOCKS-dispatched requests through undici's fetch, not Node's (#917)

* fix: Send SOCKS-dispatched requests through undici's fetch, not Node's

Onion egress has been broken since the base image moved to Node 22 (#892).
socksDispatcher comes from fetch-socks, which builds it on its own undici
(>=7). Node's built-in fetch constructs a v6-era request handler, and the newer
dispatcher rejects it:

    TypeError: fetch failed
      cause: InvalidArgumentError: invalid onRequestStart method

Measured locally against a live onion, before and after:

    built-in fetch + socksDispatcher: THREW in 10ms  -> invalid onRequestStart method
    undici's fetch + socksDispatcher: HTTP 400 in 1218ms

The 10ms is the tell. It is far too fast to be the Tor round trip it looks
like, and the error carries none of that -- it reads as an unreachable
recipient, which is why this cost a long diagnosis across two nodes before
#916 pinned it down.

**Three services were affected, not one.** #916 describes the DIDComm relay;
the same pattern is in lightning-mediator (zaps to onion recipients) and herald.
Onion Lightning payments have been failing for the same reason.

Each service now declares undici directly, so npm dedupes fetch-socks onto that
copy instead of nesting its own, and each SOCKS call site uses it.

Two things constrained the fix, both found by testing rather than reasoning:

- **undici ^7, not ^8.** 8.10.0 throws "removeAbortListener is not a function"
  on Node 22.15, which is older than the images' 22.23.2 but current for
  developers. 7.x satisfies fetch-socks's `>=7` and works on both; verified
  against a live onion.
- **Aliased, not shadowing.** Importing undici's fetch as `fetch` broke the
  other call sites in these files, which pass DOM-typed bodies (FormData, Blob),
  and silently bypassed the suites' `globalThis.fetch` mocks -- one test then hit
  the network and timed out. Only the dispatched request switches.

tests/didcomm/socks-egress.test.... (continued)

3776 of 4250 branches covered (88.85%)

Branch coverage included in aggregate %.

3 of 3 new or added lines in 1 file covered. (100.0%)

8435 of 8730 relevant lines covered (96.62%)

686.88 hits per line

Jobs
ID Job ID Ran Files Coverage
1 32515030803.1 21 Aug 2026 06:49PM UTC 178
95.09
GitHub Action Run
Source Files on build 32515030803
  • Tree
  • List 89
  • Changed 75
  • Source Changed 1
  • Coverage Changed 75
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #32515030803
  • 319c337e on github
  • Prev Build on main (#32441040486)
  • Next Build on main (#32518558576)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc