
Uses Object.defineProperty when available; falls back to standard assignment in older engines.
Existing properties are not overridden. Accepts a map of property names to a predicate that, when true, force-overrides.
Node.js is an event-based server-side JavaScript engine.