Writing an RTL is not easy. It’s not something you slap together over a few weeks, but requires a lot of research and testing. We wanted an RTL that was unmistakably object pascal, yet in a flavor that neatly interfaced with the reality of JavaScript. If you have no background in web development it’s easy to forget that JavaScript is no longer confined to the browser, it is also a bonafede scripting host, similar to Python, Php and other runtime systems.
There is a reason companies like Netflix and HBO abandoned the traditional, monolithic C/C++ service model for the more flexible and flamboyant node model. If you consider the data volume these companies handle worldwide, it should hint to what nodejs is capable of in the right hands.

Factoid: Nodejs is Javascript designed to write servers, system services and apps that run like a normal, non visual program. So once you have node installed on your system, you can write scalable servers that utilize both CPU and machine clustering. Using QTX you can further write the HTML5 front-end that interact with these services – resulting in a “full stack” development paradigme.
Implementing an RTL that is capable of working with both technologies is not as easy as it might sound, especially since node has nothing in common with browser code (except the language itself). Node is package based, supporting both clean JS packages (or libraries) as well as native modules. It has access to the filesystem, memory and is multi-process rather than multi threaded (edit: threading is now supported but differs marginally from multi process).
This last part, multi process, often confuse and annoy Delphi developers to no end, but keep in mind that node is meant to scale from tiny ARM SBCs (single board computers, like a Raspberry PI) to multi-million dollar server environments. It is tailored to happily run inside docker containers yet be at home in huge AWS cloud architectures. When you look at the big picture of industrial scale clustering, shaving 2 ms off a task with a native thread is quite frankly irrelevant.
What blew my mind with node is that when you install the full system, it also downloads and installs a Clang C/C++ compiler (which one depends on the OS, for Microsoft Windows it downloads the Visual Studio community build tools). Why? Because whenever you install a native package for node, the runtime will re-compile itself so that the native module becomes a part of the executable – and thus executes code at optimal speeds.
That is extremely powerful and impressive, especially since node covers more or less every operating system known to man.
Node likewise has a package system called NPM, which acts as a hub for literally millions of ready to use, free packages. Being able to tap into that technology and use it from Object Pascal is both exciting and beneficial. There are even drivers for good old Firebird, so using QTX to whip up some database driven back-end services is possible. We should know, our entire server infrastructure is powered by QTX services.
Obviously someone has to write a wrapper unit that maps the js objects so they can be seen by our pascal compiler, but this is not as difficult as you might imagine. It is considerably easier than writing DLL wrappers for Delphi or C#. Once the module is loaded you just look at the documentation for the method names (or dump the module into global scope to study it) and define a pascal class that match.
So there is a lot of cool stuff available to QTX and object pascal developers that has previously been completely off limits.