Sync functions block the main thread locking up the browser UI, and cannot use multi-core CPUs so have a much lower performance limit. It’s much better to write async code, and new language features like await make it easier since your code looks more like sync code.
we know it. but this one doesnt mean you can t use it in special block code. There is not a wrong api , there is a wrong developer. Eventually there is a api bad designed or working… but this it is another story
if you use a library with 50.000 lines you can really switch to async function? and then if there is a block code waiting to collect data waiting for a millisecond i dont see where is the problem for a browser view.
async and sync might be dicotomy necessary for developement.
There is no dogma in computer science but just intelligent solutions related by what you are writing.
For example introduce url:blob://… instead is wrong. In this case is absoutely wrong for a language with garbage collector and for a language used for rendering html. It is a grave error in the design because it can create memory leaks.
So it seams w3c uses many times dogma where is not necessary, and dont use it when it is necessary.