In addition, Node is a runtime that utilizes a non-blocking I/O model for handling its operations. Operations like accessing a file system or querying a database, also known as input/output operations take time. More commonly, a synchronous or blocking version of such an operation would require waiting for the results of the first operation before executing the second operation. This is known as blocking, where the second operation is blocked by the first operation’s process time. By using a non-blocking approach, or an asynchronous approach, the time it takes to execute these operations are cut shorter. Instead of waiting for the completion of the first operation, the second operation can be initiated immediately after the first. This allows two operations to process at the same time, and in the background, while and freeing resources to handle any other operations. And when the two operations are complete, then they are returned. This is concept is also borrowed from the client-side with the event loop and the message queue.