libuv is the backbone of Node.js when it comes to handling things outside the JavaScript engine (like file systems, networking, and timers).
Think of it as a middleman between your code and the operating system.
JS bole: โMain single-threaded hoon bhai, mujhe async kaam karne de.โ
libuv replies: โChinta mat kar, sab handle kar lunga. Tu bas bol.โ

And it does this all using something called the Event Loop, and a Thread Pool (Haan bhai, Node is not 100% single-threaded ๐).
JS Code is run by V8
setTimeout(() => console.log("Hello"), 1000);
V8 sees setTimeout, says โbhai ye mera kaam nahi haiโ and sends it to libuv.