tsでasync/await使ってbabelでさらにトランスパイルすれば
非同期処理を同期っぽくかけるらしいよ。
でも1の場合は素直にコールバック渡して書いたほうが楽なんじゃない