stream base → HTTP layer → framework layer

One socket, two objects

A request object and a response object are built the same way: a stream base, an HTTP layer that adds protocol semantics, and a framework layer that adds conveniences. Both are assembled by rewriting one object's prototype chain, not by wrapping it. Every section below shows the same structure on whichever side you pick. The last section is where the symmetry breaks.

Coloured terms open an explanation. Boxes in every diagram open a detailed panel.

The chain

Every member you use lives on one of these objects. The instance holds almost nothing of its own, so each property access walks upward until it finds a declaring class.

declares
why
cost

Click a link in the chain to change the panel.

What each layer declares

The full public surface, grouped by the class that declares it. Colour is the declaring layer, so a name's colour tells you how far up the chain the lookup travels.

Click any name for its one-line meaning. Names ending in () are methods.

Declared shapes

The same members again, as declarations with types and return types. The unions carry most of the meaning, so they are annotated beside the lines they sit on.

One message, traced

Seven moments in the life of a single message, with the state at each one.

The irreversible step

Each side has exactly one action that cannot be undone, and most of the confusing errors on that side trace back to it.

Where the two diverge

Same assembly, six points of asymmetry. This section does not follow the toggle.

Back to JIT-Atlas