I found node command in supervisor configuration is wrong,
bench launch socketio.js with system node and not user node
For example ubuntu 22 ships with node v12 at usr/bin/node, but in supervisor bench use the system one instead the one that you installed as v18 or v20.
command=/usr/bin/node /home/ubuntu/frappe-15/apps/frappe/socketio.js
I fixed by editing supervisor config
### FIX Node Path in Supervisor ###
which node
sudo nano /etc/supervisor/conf.d/frappe-15.conf
[program:frappe-15-node-socketio]
#command=/usr/bin/node /home/ubuntu/frappe-15/apps/frappe/socketio.js
command=/home/ubuntu/.nvm/versions/node/v18.20.5/bin/node /home/ubuntu/frappe-15/apps/frappe/socketio.js