<p dir="auto">I've stumbled over many sites that are using "weak" ciphers, and deno doesn't provide a mechanism to make fetch calls to those sites, it instead errors out with:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="TLS alert received: Message {
    typ: Alert,
    version: TLSv1_2,
    payload: Alert(
        AlertMessagePayload {
            level: Fatal,
            description: HandshakeFailure,
        },
    ),
}"><pre class="notranslate"><code class="notranslate">TLS alert received: Message {
    typ: Alert,
    version: TLSv1_2,
    payload: Alert(
        AlertMessagePayload {
            level: Fatal,
            description: HandshakeFailure,
        },
    ),
}
</code></pre></div>
<p dir="auto">I've checked <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="872657154" data-permission-text="Title is private" data-url="https://github.com/denoland/deno/issues/10447" data-hovercard-type="issue" data-hovercard-url="/denoland/deno/issues/10447/hovercard" href="https://github.com/denoland/deno/issues/10447">#10447</a> and while it's related, this is more of a broad issue rather than a single site, because contacting every affected website operator and get them to upgrade their suite is not feasible. Instead, having an option to disable cipher alerts and proceed with the connection would be ideal, especially for those that are coming from node (where this limitation doesn't exists) and want to migrate/create an API based on deno.</p>
<p dir="auto">Namely exports from <a href="https://deno.land/std@0.179.0/path/glob.ts" rel="nofollow">https://deno.land/std@0.179.0/path/glob.ts</a>, <a href="https://deno.land/std@0.179.0/path/separator.ts" rel="nofollow">https://deno.land/std@0.179.0/path/separator.ts</a> and some others. Also missing circular references like <code class="notranslate">path.posix.posix === path.posix</code>.</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="import path from &quot;node:path&quot;;
console.assert(path.SEP === undefined);
console.assert(path.SEP_PATTERN === undefined);
console.assert(path.fromFileUrl === undefined);
console.assert(path.globToRegExp === undefined);
console.assert(path.isGlob === undefined);
console.assert(path.joinGlobs === undefined);
console.assert(path.normalizeGlob === undefined);
console.assert(path.toFileUrl === undefined);
console.assert(path.posix.fromFileUrl === undefined);
console.assert(path.posix.toFileUrl === undefined);
console.assert(path.win32.fromFileUrl === undefined);
console.assert(path.win32.toFileUrl === undefined);
console.assert(path.posix.posix === path.posix);
console.assert(path.posix.win32 === path.win32);
console.assert(path.win32.posix === path.posix);
console.assert(path.win32.win32 === path.win32);
if (Deno.build.os == &quot;windows&quot;) {
  console.assert(path === path.win32);
} else {
  console.assert(path === path.posix);
}"><pre class="notranslate"><span class="pl-k">import</span> <span class="pl-s1">path</span> <span class="pl-k">from</span> <span class="pl-s">"node:path"</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">SEP</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">SEP_PATTERN</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">fromFileUrl</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">globToRegExp</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">isGlob</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">joinGlobs</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">normalizeGlob</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">toFileUrl</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">posix</span><span class="pl-kos">.</span><span class="pl-c1">fromFileUrl</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">posix</span><span class="pl-kos">.</span><span class="pl-c1">toFileUrl</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">win32</span><span class="pl-kos">.</span><span class="pl-c1">fromFileUrl</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">win32</span><span class="pl-kos">.</span><span class="pl-c1">toFileUrl</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">posix</span><span class="pl-kos">.</span><span class="pl-c1">posix</span> <span class="pl-c1">===</span> <span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">posix</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">posix</span><span class="pl-kos">.</span><span class="pl-c1">win32</span> <span class="pl-c1">===</span> <span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">win32</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">win32</span><span class="pl-kos">.</span><span class="pl-c1">posix</span> <span class="pl-c1">===</span> <span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">posix</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">win32</span><span class="pl-kos">.</span><span class="pl-c1">win32</span> <span class="pl-c1">===</span> <span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">win32</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-smi">Deno</span><span class="pl-kos">.</span><span class="pl-c1">build</span><span class="pl-kos">.</span><span class="pl-c1">os</span> <span class="pl-c1">==</span> <span class="pl-s">"windows"</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
  <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span> <span class="pl-c1">===</span> <span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">win32</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span> <span class="pl-k">else</span> <span class="pl-kos">{</span>
  <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">assert</span><span class="pl-kos">(</span><span class="pl-s1">path</span> <span class="pl-c1">===</span> <span class="pl-s1">path</span><span class="pl-kos">.</span><span class="pl-c1">posix</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span></pre></div>