Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 34.3k
module: prefer async/await in https imports#41950
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
module: prefer async/await in https imports #41950
Uh oh!
There was an error while loading. Please reload this page.
Conversation
benjamingr commented Feb 12, 2022 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
nodejs-github-bot commented Feb 12, 2022
Review requested:
|
GeoffreyBooth commented Feb 13, 2022
GeoffreyBooth left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some minor style notes, I haven’t reviewed in depth.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
benjamingr commented Feb 13, 2022
@GeoffreyBooth fixed + added http 404 handling |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
bmeck commented Feb 13, 2022
This is actually a bit complicated since import.meta.url needs the value synchronously for the response location after all redirects so it actually relies on storing the value for now. |
benjamingr commented Feb 13, 2022
Ah, mind if I add a comment to the code explaining that around the cacheForGET code? |
bmeck commented Feb 13, 2022
I'm all for comments |
benjamingr commented Feb 13, 2022
Added both comments. |
JakobJingleheimer left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oow, fancy. Much cleaner than .on(…) 🙌
| * Only for GET requests, other requests would need new Map | ||
| * HTTP cache semantics keep diff caches | ||
| * | ||
| * It caches either the promise or the cahce entry since import.meta.url needs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| *Itcacheseitherthepromiseorthecahceentrysinceimport.meta.urlneeds | |
| *Itcacheseitherthepromiseorthecacheentrysinceimport.meta.urlneeds |
Uh oh!
There was an error while loading. Please reload this page.
benjamingr commented Feb 16, 2022
@bmeck @nodejs/modules this could use some reviews :) |
guybedford left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we get a 404 test though to land?
67713f1 to ace0812Comparebenjamingr commented Feb 16, 2022
Added test :) |
nodejs-github-bot commented Feb 16, 2022
nodejs-github-bot commented Feb 18, 2022
nodejs-github-bot commented Feb 23, 2022
b3ef5cb to b575c6dComparenodejs-github-bot commented Feb 23, 2022
nodejs-github-bot commented Feb 23, 2022
nodejs-github-bot commented Feb 23, 2022
nodejs-github-bot commented Feb 23, 2022
Commit Queue failed- Loading data for nodejs/node/pull/41950 ✔ Done loading data for nodejs/node/pull/41950 ----------------------------------- PR info ------------------------------------ Title module: prefer async/await in https imports (#41950) Author Benjamin Gruenbaum (@benjamingr) Branch benjamingr:use-async-await-in-fetch-module -> nodejs:master Labels esm, needs-ci Commits 1 - module: prefer async/await in https imports Committers 1 - Benjamin Gruenbaum PR-URL: https://github.com/nodejs/node/pull/41950 Fixes: https://github.com/nodejs/node/issues/41950 Reviewed-By: Guy Bedford Reviewed-By: James M Snell ------------------------------ Generated metadata ------------------------------ PR-URL: https://github.com/nodejs/node/pull/41950 Fixes: https://github.com/nodejs/node/issues/41950 Reviewed-By: Guy Bedford Reviewed-By: James M Snell -------------------------------------------------------------------------------- ⚠ Commits were pushed since the last review: ⚠ - module: prefer async/await in https imports ℹ This PR was created on Sat, 12 Feb 2022 18:50:10 GMT ✔ Approvals: 2 ✔ - Guy Bedford (@guybedford): https://github.com/nodejs/node/pull/41950#pullrequestreview-884778590 ✔ - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/41950#pullrequestreview-889949951 ✔ Last GitHub CI successful ℹ Last Full PR CI on 2022-02-23T18:10:07Z: https://ci.nodejs.org/job/node-test-pull-request/42748/ - Querying data for job/node-test-pull-request/42748/ ✔ Last Jenkins CI successful -------------------------------------------------------------------------------- ✔ Aborted `git node land` session in /home/runner/work/node/node/.ncuhttps://github.com/nodejs/node/actions/runs/1889467631 |
benjamingr commented Feb 23, 2022
Landed in 7efef74 🎉 |
PR-URL: #41950Fixes: #41950 Reviewed-By: Guy Bedford <[email protected]> Reviewed-By: James M Snell <[email protected]>
PR-URL: nodejs#41950Fixes: nodejs#41950 Reviewed-By: Guy Bedford <[email protected]> Reviewed-By: James M Snell <[email protected]>
PR-URL: nodejs#41950Fixes: nodejs#41950 Reviewed-By: Guy Bedford <[email protected]> Reviewed-By: James M Snell <[email protected]>
juanarbol commented May 30, 2022
This is failing in the v16.x branch; let me work in a backport for this: /node--inspect--experimental-network-imports--dns-result-order=ipv4firsttest/es-module/test-http-imports.mjs Debugger listeningonws://127.0.0.1:9229/924045ba-ef66-4869-84bf-085849cbf26b Forhelp,see: https://nodejs.org/en/docs/inspector node:internal/errors:465ErrorCaptureStackTrace(err);^TypeError[ERR_INVALID_ARG_TYPE]: The"list"argumentmustbeaninstanceofArray.ReceivedaninstanceofBufferatconcat(node:buffer:537:3) at node:internal/modules/esm/fetch_module:165:24atprocessTicksAndRejections(node:internal/process/task_queues:96:5)atasync node:internal/modules/esm/fetch_module:171:7atasyncdefaultLoad(node:internal/modules/esm/load:21:14)atasyncESMLoader.load(node:internal/modules/esm/loader:407:20)atasyncESMLoader.moduleProvider(node:internal/modules/esm/loader:326:11)atasynclink(node:internal/modules/esm/module_job:70:21){ code: 'ERR_INVALID_ARG_TYPE'}Looks like the |
PR-URL: #41950Fixes: #41950 Reviewed-By: Guy Bedford <[email protected]> Reviewed-By: James M Snell <[email protected]>
PR-URL: #41950Fixes: #41950 Reviewed-By: Guy Bedford <[email protected]> Reviewed-By: James M Snell <[email protected]>
PR-URL: nodejs/node#41950Fixes: nodejs/node#41950 Reviewed-By: Guy Bedford <[email protected]> Reviewed-By: James M Snell <[email protected]>
cc @bmeck @nodejs/modules
This PR refactors the fetch_module
fetchWithRedirectsfunction to use the new modern facilities for streams:composeinstead ofpipefor simplified and "more easily correct" error handling on the body stream cc @ronag .async/awaitovernew Promise.toArray()on the response body instead of manually.Note this can probably be further simplified by always caching the promise (and never the value) and by moving the "memoize" functionality to a helper).
Fixes: #41950