async, await 할 때
coroutineScope은 하나라도 실패하면 나머지도 취소되고
supervisorScope은 어느 하나가 실패해도 나머지에 영향을 주지 않는다.
//
suspend fun fetchMultipleData() = supervisorScope {
val apiResults = listOf("api1", "api2", "api3").map { api ->
async { fetchDataFromApi(api) }
}.awaitAll()
apiResults
}