But only if you await them in that thread. If you `spawn` them, they can be executed in another free thread; although you'll miss the return value in this case.
So for people new to async/await in rust, how a web server usually works:
Request/response future is spawned to the runtime, and a thread decides to take the future for execution if the runtime uses multithreading.
Inside of this request/response future whatever futures are .awaited will continue the execution in the same thread when ready.
Users can also spawn futures inside the request/response future, which might go to another thread. The result of this future is not available for the spawning thread.
Some executors have special functions, such as `blocking` that will execute the block in another thread, giving the result back to the awaiting thread when finished.