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.