помимо синхронности, этот вариант ещё и более экономичный. По крайней мере, не понадобится копия файла в виде строки base64 (которая на 33.3% длиннее к тому же) и вообще возня с этим base64 туда-сюда.
мелкое неудобство - надо не забывать вызвать URL.revokeObjectURL, потому что иначе файлы остаются висеть в памяти до перезагрузки страницы. Впрочем, если у тебя не синглпейдж, то не проблема.