Skip to main content
GoodFirstPicks
DashboardIssuesReposLeaderboard

GoodFirstPicks by Leaveitblank © 2026

CreatorRequest a RepoPrivacy PolicyTerms of Service
fetch() ETIMEDOUT on specific Cloudflare IPs while curl.exe works on Windows | GoodFirstPicks

fetch() ETIMEDOUT on specific Cloudflare IPs while curl.exe works on Windows

nodejs/node 2 comments 1mo ago
View on GitHub
mediumopenScope: somewhat clearSkill match: maybeNode.jsJavaScript

Why this is a good first issue

Platform-specific networking issue with unclear root cause despite reproduction attempts.

AI Summary

The issue involves Node.js fetch() timing out on specific Cloudflare IPs on Windows while other tools work, suggesting a platform-specific networking stack problem. The root cause isn't immediately clear despite reproduction attempts, and it may involve undici's connection handling. The maintainer has pointed to a potential related undici issue, indicating this might require deeper networking knowledge to diagnose.

Issue Description

Version

Node.js v22.22.0 Windows 11 (Build 26100)

Platform

Windows_NT 10.0.26100 x64

Subsystem

net, undici (fetch)

What steps will reproduce the bug?

  1. Run this command on Windows:
node -e "fetch('https://shadcn-vue.com').then(r => console.log(r.status)).catch(e => console.log(e.message))"
  1. Result: fetch failed with ETIMEDOUT

  2. Run with curl.exe on the same machine:

curl.exe -I https://shadcn-vue.com
  1. Result: HTTP/1.1 200 OK

Additional context

  • Same network, same site, different results:

    • curl.exe → Works (200)
    • PowerShell Invoke-WebRequest → Works (200)
    • Node.js fetch() → ETIMEDOUT
    • Node.js require('https').get() → Hangs forever
  • Other sites work fine in Node.js:

    • https://google.com → 200 ✓
    • https://github.com → 200 ✓
    • https://cloudflare.com → 200 ✓
    • https://shadcn-vue.com → ETIMEDOUT ✗
  • Same code works on Mac:

    • Tested on macOS with the same Node.js version on the same network → Returns 200

Error details

AggregateError [ETIMEDOUT]:
    at internalConnectMultiple (node:net:1134:18)
    at afterConnectMultiple (node:net:1715:7) {
  code: 'ETIMEDOUT',
  [errors]: [
    Error: connect ETIMEDOUT 172.67.178.160:443 {
      errno: -4039,
      code: 'ETIMEDOUT',
      syscall: 'connect',
      address: '172.67.178.160',
      port: 443
    },
    Error: connect ENETUNREACH 2606:4700:3033::6815:11e2:443 {
      errno: -4062,
      code: 'ENETUNREACH',
      syscall: 'connect',
      address: '2606:4700:3033::6815:11e2',
      port: 443
    },
    Error: connect ETIMEDOUT 104.21.17.226:443 {
      errno: -4039,
      code: 'ETIMEDOUT',
      syscall: 'connect',
      address: '104.21.17.226',
      port: 443
    },
    Error: connect ENETUNREACH 2606:4700:3037::ac43:b2a0:443 {
      errno: -4062,
      code: 'ENETUNREACH',
      syscall: 'connect',
      address: '2606:4700:3037::ac43:b2a0',
      port: 443
    }
  ]
}

What I've tri

Want to work on this?

Claim this issue to let others know you're working on it. You'll earn 10 points when you complete it!

Risk Flags

  • network-specific behavior
  • platform-specific issue
  • potential undici integration
Loading labels...

Details

Points10 pts
Difficultymedium
Scopesomewhat clear
Skill Matchmaybe
Test Focusedno