remove runInContext callbacks from stream-ops (#90609)
The `runInContext` pattern that's used all over `stream-ops` is weird
and feels very unnecessary -- we're passing in callbacks that just get
invoked immediately, and all they do is call `AsyncLocalStorage.run`. We
should just use the standard `AsyncLocalStorage.run` method outside
instead. I commented about getting rid of it somewhere on the original
node streams PR, but that got lost when it was was split up.
I believe the original reasoning for addding it at all was that some of
the node-streams implementations needed to preserve async context for
callbacks -- see eg
[here](https://github.com/vercel/next.js/blob/558f4248e5e5641d78b865a291c099791460d486/packages/next/src/server/app-render/node-stream-tee.ts#L244).
But if that's the motivation, then the current `runInContext` pattern
**is wrong anyway** -- sure, it preserves `workUnitAsyncStorage`, but
doesn't preserve `workAsyncStorage` and whetever other ALSes may be
present, so it's not semantically correct. If this is the goal, then the
relevant callbacks should use `bindSnapshot` (i.e.
`AsyncLocalStorage.bind`) instead, because it preserves the entire
context, not just one ALS.
(Note that technically the `runInContext` pattern is salvageable if we
just always pass `AsyncLocalStorage.snapshot()`, but then i see no
reason why the caller should have to do that. `AsyncLocalStorage.bind`
is cleaner)
Note that this'll require changes in #89859