node.js – Node-Red: external system connection sharing

I am developing a new inject node with a new configuration node for connecting to a 3rd party system.

I’d like the configuration node to maintain an actual connection to the system and share it with UI nodes, instead of just storing the configuration.

The problem I am facing is that the procedure of creating the connection (in config node) is asynchronous and it finishes AFTER the UI nodes finish initializing. To properly initialize the UI nodes, I need the config node initialization to finish first.

This is my config node pseudo code:

module.exports = function(RED) {

    function FakeConnectionNode(config) {

        (async function initializeNode(self) {
            const reconnect = () => new Promise(resolve => {
                reconnectTimeout = setTimeout(async () => {
                    try {
                        await initializeNode(self);
                    catch (e) {
                        await reconnect();
                }, 2000);
            try {

                    await init_connection('new_connection', {
                          some config params
                    }, async () => {
                        console.debug('connection created');
            catch ...

Read more here: Source link