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

Kikobeats / reachable-url / 30746591216
100%

Build:
DEFAULT BRANCH: master
Ran 02 Aug 2026 11:52AM UTC
Jobs 1
Files 1
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

02 Aug 2026 11:51AM UTC coverage: 100.0%. Remained the same
30746591216

push

github

web-flow
fix!: abort the download when a server ignores Range (#77)

* fix!: abort the download when a server ignores Range

The request asks for one byte, but a server may ignore `Range` and send
the whole entity, which `responseType: 'buffer'` then buffers in full.
Probing an 8 MB file transferred all 8 MB to read a status line.

Cancel once the response starts: status and headers already answer
whether the URL is reachable. Measured on an 8 MB body, 0.56 MB crosses
the wire instead of 8 MB, the rest being what is already in flight.

Not when `cache` is passed: cacheable-request writes its entry on `end`,
which a cancelled response never emits, so caching keeps the full body.
Not on 5xx either, since got retries those and a CancelError is not
retryable, and not when the server honored the range and sent one byte.

An aborted response reports `body` as `undefined` rather than the body of
the previous retry attempt, and keeps `timings.phases.total`, which the
timer only fills on `end`.

BREAKING CHANGE: `body` is `undefined` on responses whose download was
aborted. Pass `cache` to keep the previous behaviour.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018JDsM3McLV5LtR3rFd97Sb

* feat: reject the cache option without the patched cacheable-request

The cacheable-request got resolves never settles when the origin keeps
the connection alive, and got's own timeout does not fire, so the request
hangs with no stack and nothing to grep for. An override redirects it to
@kikobeats/cacheable-request, but overrides do not reach consumers of
this package, and the pnpm one silently stopped applying once pnpm moved
that setting out of package.json.

Throw instead, naming the override that fixes it. Only when `cache` is
passed, since that is the only path that hangs.

Detection reads the module shape rather than its resolved path, because a
path can be rewritten by bundlers and aliases: upstream is a clas... (continued)

37 of 37 branches covered (100.0%)

Branch coverage included in aggregate %.

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

143 of 143 relevant lines covered (100.0%)

353.64 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30746591216.1 02 Aug 2026 11:52AM UTC 1
100.0
GitHub Action Run
Source Files on build 30746591216
  • Tree
  • List 1
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30746591216
  • d6f7a3c9 on github
  • Prev Build on master (#30746591212)
  • Next Build on master (#30754219603)
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