You set async to false, when you need that ajax request to be completed before the browser passes to other codes:
$.ajax(... async: false ...); // Hey browser! first complete this request,
// then go for other codes
$.ajax(...); // Executed after the completion of the previous async:false request.
Does it have something to do with preventing other events on the page from firing?
Setting async to false means that the statement you are calling has to complete before the next statement in your function can be called. If you set async: true then that statement will begin it’s execution and the next statement will be called regardless of whether the async statement has completed yet.