Preventing the ui thread from waiting on native IO is what async was created for.
Citation needed. async just a wrapper for Promises. IO isn't related, just commonly used with it.
NodeJS's IO and fetch are just promises. (And NodeJS used to use callback(err, response) before adding promises.).