What is a call stack? What is a thread pool? What is a callback? Why are coroutines called lightweight threads?