You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've found that Deno's h2 implementation is hanging fetch() calls when an HTTP2 error occurs.
In this case, the response headers are very large (~20kb). Deno seems to be dropping the transaction because of stream error REQUEST_HEADER_FIELDS_TOO_LARGE without resolving or rejecting the promise, so the fetch() call waits forever.
# expected behavior:
$ curl https://eo82u4jujnkymoi.m.pipedream.net
You got the response!# will just hang forever:
$ deno run --allow-net https://deno.land/[email protected]/examples/curl.ts https://eo82u4jujnkymoi.m.pipedream.net
# ...
debug log
I have captured a debug log, which is how I was finally able to see what the actual issue was (I spent at least an hour finding the trigger 😓)
Version: Deno 2.1.7
I've found that Deno's h2 implementation is hanging fetch() calls when an HTTP2 error occurs.
In this case, the response headers are very large (~20kb). Deno seems to be dropping the transaction because of
stream error REQUEST_HEADER_FIELDS_TOO_LARGE
without resolving or rejecting the promise, so thefetch()
call waits forever.reproduction
I have set up a reproduction endpoint that can be used like so:
debug log
I have captured a debug log, which is how I was finally able to see what the actual issue was (I spent at least an hour finding the trigger 😓)
workaround
Disabling http2 for the fetch call via
Deno.createHttpClient({http2: false})
The text was updated successfully, but these errors were encountered: