GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — async_hooks: add AsyncLocalStorage.bind() and AsyncLocalStorage.snapshot() by flakey5 · Pull Request #46387 · nodejs/node

Conversation

@flakey5

@flakey5 flakey5 commented Jan 28, 2023

Copy link
Copy Markdown
Member

Very small part of #46265. Simplifies the impl to align closer with the upcoming AsyncContext standard

cc @jasnell @Qard

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

jasnell, benjamingr, and Qard reacted with thumbs up emoji Qard reacted with heart emoji Qard reacted with rocket emoji tonivj5 and Qard reacted with eyes emoji
All reactions
  • 👍 3 reactions
  • ❤️ 1 reaction
  • 🚀 1 reaction
  • 👀 2 reactions
@nodejs-github-bot nodejs-github-bot added async_hooks Issues and PRs related to the async hooks subsystem. needs-ci PRs that need a full CI run. labels Jan 28, 2023
@jasnell

jasnell commented Jan 28, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

For context: This is part of an effort to drive closer alignment between AsyncLocalStorage and the upcoming AsyncContext standard API being proposed in TC-39. Specifically, AsyncLocalStorage.bind() equates directly to AsyncContext.wrap().

This also helps to reconcile the weird state of AsyncResource, which kind of straddles the line between async resource tracking with async_hooks and async context propagation. With the modification in this PR, we can draw a cleaner line between these. It also opens the door to implementing the performance improvements for async context propagation that I have in mind.

With this, AsyncResource.bind(() => {}) is replaced with AsyncLocalStorage.bind(() => {})

And ... const Foo extends AsyncResource { ... } can be replaced with:

class Foo {
  #runInAsyncScope = AsyncLocalStorage.snapshot();
  bar() { this.#runInAsyncScope(() => {});
}

This is still using AsyncResource under the covers for now but the expectation is that would change with the new, more efficient async context tracking model.

AsyncResource is intentionally untouched/unmodified here. There is no intention to change that at all to maintain backwards compatibility.

/cc @littledan @jridgewell @legendecas @nodejs/async_hooks

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

jasnell
jasnell reviewed Jan 28, 2023
View reviewed changes
Comment thread doc/api/async_context.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

jasnell
jasnell reviewed Jan 28, 2023
View reviewed changes
Comment thread doc/api/async_context.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

jasnell
jasnell reviewed Jan 28, 2023
View reviewed changes
Comment thread doc/api/async_context.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

jasnell
jasnell reviewed Jan 28, 2023
View reviewed changes
Comment thread doc/api/async_context.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

@jasnell

jasnell commented Jan 28, 2023

Copy link
Copy Markdown
Member

@flakey5 ... left a couple of nits. Needs tests added. Otherwise looking good.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jasnell jasnell changed the title lib: AsyncLocalStorage.bind() and AsyncLocalStorage.snapshot() async_hooks: add AsyncLocalStorage.bind() and AsyncLocalStorage.snapshot() Jan 28, 2023
jridgewell
jridgewell reviewed Jan 28, 2023
View reviewed changes
Comment thread doc/api/async_context.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread doc/api/async_context.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

@flakey5
flakey5 force-pushed the flakey5/als-bind branch from 3aacf44 to 23a54a4 Compare January 28, 2023 03:34
Qard
Qard previously approved these changes Jan 28, 2023
View reviewed changes

@Qard Qard left a comment •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

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.

Looks good for the most part, though the snapshot() function does deviate a bit from the AsyncContext proposal. This should be brought to the attention of TC39 folks evaluating it to ensure this additional method gets added to the proposal, if it's needed.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread doc/api/async_context.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

@Qard
Qard dismissed their stale review January 28, 2023 06:17

Oops, meant to leave as comment not approval.

@flakey5
flakey5 force-pushed the flakey5/als-bind branch from 23a54a4 to a8e0772 Compare January 28, 2023 17:08
jasnell
jasnell reviewed Jan 28, 2023
View reviewed changes
Comment thread doc/api/async_context.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

@jasnell

jasnell commented Jan 28, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

@Qard ... I brought up snapshot in the AsyncContext discussion. Not sure it'll make it in but we were careful to define it in terms that would be compatible still moving forward.

Qard reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@flakey5
flakey5 force-pushed the flakey5/als-bind branch 2 times, most recently from 55f12e4 to c8451aa Compare January 29, 2023 19:47
@flakey5

flakey5 commented Jan 29, 2023

Copy link
Copy Markdown
Member Author

Tests added

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jasnell jasnell added the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Jan 30, 2023
jasnell
jasnell reviewed Jan 30, 2023
View reviewed changes
Comment thread test/parallel/test-async-local-storage-bind.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Jan 30, 2023
@nodejs-github-bot

nodejs-github-bot commented Jan 30, 2023

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/49256/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jasnell

jasnell commented Jan 30, 2023

Copy link
Copy Markdown
Member

Overall looks good to me modulo the linting issues, but I'm not going to sign off since I'm the once that asked @flakey5 if he'd like to make these changes in the first place. Need others to sign off.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@benjamingr

benjamingr commented Jan 30, 2023

Copy link
Copy Markdown
Member

This should probably be marked in the docs as experimental and possibly (but no strong feelings on that part) emit an experimental warning since AsyncLocalStorage itself is stable, shouldn't it?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jasnell

jasnell commented Jan 30, 2023

Copy link
Copy Markdown
Member

Why would this be experimental? Currently it is an alias for a non-experimental API on AsyncResource. The alternative underlying implementation (when that's available) will be experimental but I see no reason for these two methods to be.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Flarna
Flarna reviewed Jan 30, 2023
View reviewed changes
Comment thread lib/async_hooks.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

@Flarna

Flarna commented Jan 30, 2023

Copy link
Copy Markdown
Member

To my understanding these APIs target an upcoming TC-39 spec. Making it experimental allows to adapt in case the final standard differs from current implementation.

Qard reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jasnell

jasnell commented Jan 30, 2023

Copy link
Copy Markdown
Member

these APIs target an upcoming TC-39 spec

These align with the upcoming TC-39 spec but AsyncLocalStorage is still a Node.js specific API and these are defined there.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@Flarna

Flarna commented Jan 30, 2023

Copy link
Copy Markdown
Member

Sure, but as long as TC-39 is not complete we have no guarantee that these APIs can be implemented on top of the spec. Therefore I think we should be careful in adding new stable APIs in this area to avoid that we need maybe one more set which just minimal differences.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@flakey5 @jasnell
lib: add AsyncLocalStorage.bind() and .snapshot()
a3d4c95
@jasnell
jasnell force-pushed the flakey5/als-bind branch from 8842c99 to a3d4c95 Compare February 19, 2023 19:17
@nodejs-github-bot

This comment was marked as outdated.

Sign in to view
Flarna
Flarna approved these changes Feb 19, 2023
View reviewed changes
@nodejs-github-bot

This comment was marked as outdated.

Sign in to view
@nodejs-github-bot

This comment was marked as outdated.

Sign in to view
@nodejs-github-bot

nodejs-github-bot commented Feb 19, 2023 •
edited by jasnell
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/49745/ 💚

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jasnell jasnell added commit-queue PRs queued for automated landing through the Commit Queue. and removed commit-queue PRs queued for automated landing through the Commit Queue. labels Feb 19, 2023
@jasnell

jasnell commented Feb 19, 2023

Copy link
Copy Markdown
Member

Landed in 9a82938

tonivj5, flakey5, and Qard reacted with rocket emoji
All reactions
  • 🚀 3 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jasnell jasnell closed this Feb 19, 2023
jasnell pushed a commit that referenced this pull request Feb 19, 2023
@flakey5 @jasnell
lib: add AsyncLocalStorage.bind() and .snapshot()
9a82938
PR-URL: #46387
Reviewed-By: Stephen Belanger <[email protected]>
Reviewed-By: Chengzhong Wu <[email protected]>
Reviewed-By: Gerhard Stöbich <[email protected]>
jasnell added a commit to cloudflare/workerd that referenced this pull request Feb 19, 2023
@jasnell
Add AsyncLocalStorage.bind/snapshot
dbf9bc6
These are proposed (in progress) additions to AsyncLocalStorage
in Node.js that serve a dual purpose:

1. They align the API closer to the expected AsyncContext.wrap
   api (AsyncLocalStorage.bind == AsyncContext.wrap). It uses
   the existing naming from AsyncResource for consistency with
   the existing API.
2. They eliminate the need to use AsyncResource. We will keep
   AsyncResource for backwards compatibility as part of the
   larger Node.js compat story, but these cover all of the
   key use cases of AsyncResource for context tracking.

This should not land until nodejs/node#46387 lands.
@github-actions github-actions Bot mentioned this pull request Feb 20, 2023
CI Reliability 2023-02-20 nodejs/reliability#501
Open
24 tasks
@joyeecheung joyeecheung mentioned this pull request Feb 20, 2023
parallel/test-runner-reporters is flaking #46747
Closed
@github-actions github-actions Bot mentioned this pull request Feb 21, 2023
CI Reliability 2023-02-21 nodejs/reliability#502
Open
26 tasks
targos pushed a commit that referenced this pull request Mar 13, 2023
@flakey5 @targos
lib: add AsyncLocalStorage.bind() and .snapshot()
c1651be
PR-URL: #46387
Reviewed-By: Stephen Belanger <[email protected]>
Reviewed-By: Chengzhong Wu <[email protected]>
Reviewed-By: Gerhard Stöbich <[email protected]>
@targos targos mentioned this pull request Mar 14, 2023
v19.8.0 release proposal #47087
Merged
targos added a commit that referenced this pull request Mar 14, 2023
@targos
2023-03-14, Version 19.8.0 (Current)
4221dce
Notable changes:

buffer:
  * (SEMVER-MINOR) add Buffer.copyBytesFrom(...) (James M Snell) #46500
doc:
  * add marco-ippolito to collaborators (Marco Ippolito) #46816
events:
  * (SEMVER-MINOR) add listener argument to listenerCount (Paolo Insogna) #46523
lib:
  * (SEMVER-MINOR) add AsyncLocalStorage.bind() and .snapshot() (flakey5) #46387
src:
  * (SEMVER-MINOR) add `fs.openAsBlob` to support File-backed Blobs (James M Snell) #45258
tls:
  * (SEMVER-MINOR) support automatic DHE (Tobias Nießen) #46978
url:
  * (SEMVER-MINOR) implement URLSearchParams size getter (James M Snell) #46308
wasi:
  * (SEMVER-MINOR) add support for version when creating WASI (Michael Dawson) #46469
worker:
  * (SEMVER-MINOR) add support for worker name in inspector and trace_events (Debadree Chatterjee) #46832

PR-URL: #47087
targos added a commit that referenced this pull request Mar 14, 2023
@targos
2023-03-14, Version 19.8.0 (Current)
115c9ac
Notable changes:

buffer:
  * (SEMVER-MINOR) add Buffer.copyBytesFrom(...) (James M Snell) #46500
doc:
  * add marco-ippolito to collaborators (Marco Ippolito) #46816
events:
  * (SEMVER-MINOR) add listener argument to listenerCount (Paolo Insogna) #46523
lib:
  * (SEMVER-MINOR) add AsyncLocalStorage.bind() and .snapshot() (flakey5) #46387
src:
  * (SEMVER-MINOR) add `fs.openAsBlob` to support File-backed Blobs (James M Snell) #45258
tls:
  * (SEMVER-MINOR) support automatic DHE (Tobias Nießen) #46978
url:
  * (SEMVER-MINOR) implement URLSearchParams size getter (James M Snell) #46308
wasi:
  * (SEMVER-MINOR) add support for version when creating WASI (Michael Dawson) #46469
worker:
  * (SEMVER-MINOR) add support for worker name in inspector and trace_events (Debadree Chatterjee) #46832

PR-URL: #47087
danielleadams pushed a commit that referenced this pull request Apr 11, 2023
@flakey5 @danielleadams
lib: add AsyncLocalStorage.bind() and .snapshot()
f1b7982
PR-URL: #46387
Reviewed-By: Stephen Belanger <[email protected]>
Reviewed-By: Chengzhong Wu <[email protected]>
Reviewed-By: Gerhard Stöbich <[email protected]>
@danielleadams danielleadams mentioned this pull request Apr 11, 2023
v18.16.0 release proposal #47502
Merged
danielleadams added a commit that referenced this pull request Apr 11, 2023
@danielleadams
2023-04-11, Version 18.16.0 'Hydrogen' (LTS)
410905a
Notable changes:

* buffer:
  * (SEMVER-MINOR) add Buffer.copyBytesFrom(...) (James M Snell) #46500
* doc:
  * add marco-ippolito to collaborators (Marco Ippolito) #46816
  * add debadree25 to collaborators (Debadree Chatterjee) #46716
  * add deokjinkim to collaborators (Deokjin Kim) #46444
* events:
  * (SEMVER-MINOR) add listener argument to listenerCount (Paolo Insogna) #46523
* lib:
  * (SEMVER-MINOR) add AsyncLocalStorage.bind() and .snapshot() (flakey5) #46387
  * (SEMVER-MINOR) add aborted() utility function (Debadree Chatterjee) #46494
* src:
  * (SEMVER-MINOR) allow optional Isolate termination in node::Stop() (Shelley Vohr) #46583
  * (SEMVER-MINOR) allow embedder control of code generation policy (Shelley Vohr) #46368
* stream:
  * (SEMVER-MINOR) add abort signal for ReadableStream and WritableStream (Debadree Chatterjee) #46273
* tls:
  * (SEMVER-MINOR) support automatic DHE (Tobias Nießen) #46978
* url:
  * (SEMVER-MINOR) implement URLSearchParams size getter (James M Snell) #46308
* worker:
  * (SEMVER-MINOR) add support for worker name in inspector and trace_events (Debadree Chatterjee) #46832

PR-URL: #47502
danielleadams added a commit that referenced this pull request Apr 11, 2023
@danielleadams
2023-04-11, Version 18.16.0 'Hydrogen' (LTS)
50edc7f
Notable changes:

* buffer:
  * (SEMVER-MINOR) add Buffer.copyBytesFrom(...) (James M Snell) #46500
* doc:
  * add marco-ippolito to collaborators (Marco Ippolito) #46816
  * add debadree25 to collaborators (Debadree Chatterjee) #46716
  * add deokjinkim to collaborators (Deokjin Kim) #46444
* events:
  * (SEMVER-MINOR) add listener argument to listenerCount (Paolo Insogna) #46523
* lib:
  * (SEMVER-MINOR) add AsyncLocalStorage.bind() and .snapshot() (flakey5) #46387
  * (SEMVER-MINOR) add aborted() utility function (Debadree Chatterjee) #46494
* src:
  * (SEMVER-MINOR) allow optional Isolate termination in node::Stop() (Shelley Vohr) #46583
  * (SEMVER-MINOR) allow embedder control of code generation policy (Shelley Vohr) #46368
  * (SEMVER-MINOR) add initial support for single executable applications (Darshan Sen) #45038
* stream:
  * (SEMVER-MINOR) add abort signal for ReadableStream and WritableStream (Debadree Chatterjee) #46273
* tls:
  * (SEMVER-MINOR) support automatic DHE (Tobias Nießen) #46978
* url:
  * (SEMVER-MINOR) implement URLSearchParams size getter (James M Snell) #46308
* worker:
  * (SEMVER-MINOR) add support for worker name in inspector and trace_events (Debadree Chatterjee) #46832

PR-URL: #47502
danielleadams added a commit that referenced this pull request Apr 12, 2023
@danielleadams
2023-04-12, Version 18.16.0 'Hydrogen' (LTS)
43d167a
Notable changes:

Add initial support for single executable applications

Compile a JavaScript file into a single executable application:

```console
$ echo 'console.log(`Hello, ${process.argv[2]}!`);' > hello.js

$ cp $(command -v node) hello

$ npx postject hello NODE_JS_CODE hello.js \
    --sentinel-fuse NODE_JS_FUSE_fce680ab2cc467b6e072b8b5df1996b2

$ npx postject hello NODE_JS_CODE hello.js \
    --sentinel-fuse NODE_JS_FUSE_fce680ab2cc467b6e072b8b5df1996b2 \
    --macho-segment-name NODE_JS

$ ./hello world
Hello, world!
```

Contributed by Darshan Sen in #45038

Replace url parser with Ada

Node.js gets a new URL parser called Ada that is compliant with the WHATWG
URL Specification and provides more than 100% performance improvement to
the existing implementation.

Contributed by Yagiz Nizipli in #46410

Other notable changes:

* buffer:
  * (SEMVER-MINOR) add Buffer.copyBytesFrom(...) (James M Snell) #46500
* doc:
  * add marco-ippolito to collaborators (Marco Ippolito) #46816
  * add debadree25 to collaborators (Debadree Chatterjee) #46716
  * add deokjinkim to collaborators (Deokjin Kim) #46444
* events:
  * (SEMVER-MINOR) add listener argument to listenerCount (Paolo Insogna) #46523
* lib:
  * (SEMVER-MINOR) add AsyncLocalStorage.bind() and .snapshot() (flakey5) #46387
  * (SEMVER-MINOR) add aborted() utility function (Debadree Chatterjee) #46494
* src:
  * (SEMVER-MINOR) allow optional Isolate termination in node::Stop() (Shelley Vohr) #46583
  * (SEMVER-MINOR) allow embedder control of code generation policy (Shelley Vohr) #46368
* stream:
  * (SEMVER-MINOR) add abort signal for ReadableStream and WritableStream (Debadree Chatterjee) #46273
* tls:
  * (SEMVER-MINOR) support automatic DHE (Tobias Nießen) #46978
* url:
  * (SEMVER-MINOR) implement URLSearchParams size getter (James M Snell) #46308
* worker:
  * (SEMVER-MINOR) add support for worker name in inspector and trace_events (Debadree Chatterjee) #46832

PR-URL: #47502
danielleadams added a commit that referenced this pull request Apr 13, 2023
@danielleadams
2023-04-12, Version 18.16.0 'Hydrogen' (LTS)
5273947
Notable changes:

Add initial support for single executable applications

Compile a JavaScript file into a single executable application:

```console
$ echo 'console.log(`Hello, ${process.argv[2]}!`);' > hello.js

$ cp $(command -v node) hello

$ npx postject hello NODE_JS_CODE hello.js \
    --sentinel-fuse NODE_JS_FUSE_fce680ab2cc467b6e072b8b5df1996b2

$ npx postject hello NODE_JS_CODE hello.js \
    --sentinel-fuse NODE_JS_FUSE_fce680ab2cc467b6e072b8b5df1996b2 \
    --macho-segment-name NODE_JS

$ ./hello world
Hello, world!
```

Contributed by Darshan Sen in #45038

Replace url parser with Ada

Node.js gets a new URL parser called Ada that is compliant with the WHATWG
URL Specification and provides more than 100% performance improvement to
the existing implementation.

Contributed by Yagiz Nizipli in #46410

Other notable changes:

* buffer:
  * (SEMVER-MINOR) add Buffer.copyBytesFrom(...) (James M Snell) #46500
* doc:
  * add marco-ippolito to collaborators (Marco Ippolito) #46816
  * add debadree25 to collaborators (Debadree Chatterjee) #46716
  * add deokjinkim to collaborators (Deokjin Kim) #46444
* events:
  * (SEMVER-MINOR) add listener argument to listenerCount (Paolo Insogna) #46523
* lib:
  * (SEMVER-MINOR) add AsyncLocalStorage.bind() and .snapshot() (flakey5) #46387
  * (SEMVER-MINOR) add aborted() utility function (Debadree Chatterjee) #46494
* src:
  * (SEMVER-MINOR) allow optional Isolate termination in node::Stop() (Shelley Vohr) #46583
  * (SEMVER-MINOR) allow embedder control of code generation policy (Shelley Vohr) #46368
* stream:
  * (SEMVER-MINOR) add abort signal for ReadableStream and WritableStream (Debadree Chatterjee) #46273
* tls:
  * (SEMVER-MINOR) support automatic DHE (Tobias Nießen) #46978
* url:
  * (SEMVER-MINOR) implement URLSearchParams size getter (James M Snell) #46308
* worker:
  * (SEMVER-MINOR) add support for worker name in inspector and trace_events (Debadree Chatterjee) #46832

PR-URL: #47502
@coderabbitai coderabbitai Bot mentioned this pull request Aug 21, 2026
feat(runtime): node:async_hooks with engine-propagated async context frostney/GocciaScript#1192
Merged
4 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@jasnell jasnell jasnell left review comments
@Qard Qard Qard approved these changes
@legendecas legendecas legendecas approved these changes
@Flarna Flarna Flarna approved these changes
+1 more reviewer
@jridgewell jridgewell jridgewell left review comments
Reviewers whose approvals may not affect merge requirements

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

async_hooks Issues and PRs related to the async hooks subsystem. needs-ci PRs that need a full CI run. semver-minor PRs that contain new features and should be released in the next minor version.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

8 participants

@flakey5 @jasnell @nodejs-github-bot @benjamingr @Flarna @Qard @jridgewell @legendecas
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.