Lastly, this big problem that my design does not solve - we are stuck with 2x memory to parse the input.
Perfect case - 1X memory, zero-copy way of doing things. Is this possible in JS - no. If we receive ArrayBuffer, we can't make a "string view" out of it. As was mentioned here (Champion needed) Improve handling of network data - #15 by markm, this could be possible with immutable arrayBuffers, but remains a dubious decision.
Even if I did create a streaming parser, it would still have to make copying. The only change is that input parts are Garbage Collected a bit sooner (no guarantees though). JSON.parseBinary makes a move from the status quo. More performant move than other alternatives. Pursuing zero-copy path is not possible today, that is why my design solves everything it should