I\'ve not seen (yet?) JSON.stringify
to be non-deterministic in Node.JS.
There is no guarantee it to be deterministic on the specification level.
Determinism in your terms boil down to these:
Yes, the traversal through the object data happen in the same 'route' always.
Yes, unless the arbitrariness introduced through toJSON overrides as @jmrk explained above.
No, V8 script runner is single threaded, so no cluttered access happen.
No, apart from the contextual replacers / overrides, the parser and stringify SHOULD produce same data everytime.
No, the spec is not clear on the order of listing Object fields so implementations are free to iterate through objects which means the data may be same to the 'purpose' and 'spirit', not comparable byte-to-byte.
Hope this helps!