Now, we can also simulate a delay using setTimeout, so let's do that. In our code, just before the callback (user) statement, we'll use setTimeout just like we did before in the previous section. We'll pass an arrow function (=>) in as the first argument, and set a delay of 3 seconds using 3000 milliseconds:
setTimeout(() => {
}, 3000);
callback(user);
};
Now I can take my callback call, delete it from line 10, and add it inside of the callback function, as shown here:
setTimeout(() => {
callback(user);
}, 3000);
};
Now we'll not be responding to the getUser request until three seconds have passed. Now this will be more or less similar to what happens when we create real-world examples of callbacks, we pass in a callback, some sort of delay happens whether we're requesting from a database or from an HTTP endpoint, and then the callback gets fired.
If I save callbacks.js and rerun the code from the Terminal, you'll see we wait those three seconds, which is the simulated delay, and then the user object prints to the screen:

This is exactly the principle that we need to understand in order to start working with callbacks, and that is exactly what we'll start doing in this section.