The commands are synchronous, but the file display usually only updates (e.g. to reflect the new names of things) after all the commands complete, since it'd slow things down a lot to update it synchronously after every command and it's almost never needed.
(There's a bit more to it, but that's the main detail.)