Occhio però che non sono compatibili con tutti i browser, a meno di non usare un "transpiler" nella scrittura di applicazioni; ad esempio, su Internet Explorer (benché morente) non sono supportate.
Anche secondo me, ma non sforzandosi nel rivedere il codice oppure isolare quella parte in qualcosa di riproducibile, capire dov'è il problema non è così semplice.
Magari la sintassi async/await può aiutare, tuttavia si tratta comunque di "zucchero sintattico" che - dietro le quinte - fa comunque uso di Promise, quindi lo strumento è lo stesso e pertanto non è da escludere che, al termine della riscrittura, ci troveremo ad analizzare di nuovo una "barca" di codice riscritto con problematiche affini.
A mio avviso, qui va cambiato l'approccio nella scrittura del codice, più che l'espediente per l'asincronicità.
Ciao!