A non-blocking I/O call is made by the browser engine when performing an Ajax request that doesn't block the JavaScript thread.
There are various ways in which browsers can handle Ajax networking, with the key point being that it does not interfere with the execution of JavaScript or any other threads necessary for the browser's operation during the call.
Possible implementations include using a separate OS thread to run the Ajax call in a blocking manner, utilizing non-blocking I/O on a separate thread, employing non-blocking I/O on the JavaScript interpreter thread, or even employing a separate process with IPC communication for networking operations. Each browser may choose its own method as long as it allows for asynchronous Ajax networking without impacting JavaScript interpretation. Different browsers may have slightly different approaches, such as Chrome using a separate process for each browser window.