참고 자료 : https://www.youtube.com/watch?v=PXnVry_emns

runBlocking 스레드를 차단하기 때문에 UI 스레드에서 이를 실행하지 말아야 한다. 하지만 Coroutine에서는 이 함수를 제공하고 있으므로, 사용할 수 있는 사례가 있다. 영상에서는 사례로 두 가지를 이야기 한다.

  1. OkHttp의 interceptor

interceptor는 suspend 빌더를 제공하지 않으므로, store에서 token을 가져오는 suspend 함수를 호출할 수 없다. 따라서 이 경우 runBlocking을 호출할 수 있다. interceptor는 새로운 스레드를 만들기 때문에 runBlocking이 메인 스레드를 차단하지 않는다. 하지만 모든 네트워크 요청에 대해 새로운 스레드를 만드는 것이 아니라 스레드풀을 이용하므로, runBlocking은 다른 네트워크 콜을 차단할 수 있으므로 유의가 필요하다. 혹은 참조할 수 있는 메모리에 들고 있는 것이다.

alternative solution in this case would be to just have some kind of flow inside of that session storage which you observe and that you just keep an inmemory reference to that session token

  1. 테스트에 사용할 수 있다.