Creating Your Own Runtime 262 The first thing we do is add reqwest as a dependency in Cargo. toml by typing the following: cargo add reqwest@0. 11 Next, let's change our async_main function so we use reqwest instead of our own HTTP client: ch10/b-rust-futures-examples/src/main. rs (async_main2) async fn async_main() { println!("Program starting"); let url = "http://127. 0. 0. 1:8080/600/Hello Async Await 1"; let res = reqwest::get(url). await. unwrap(); let txt = res. text(). await. unwrap(); println!("{txt}"); let url = "http://127. 0. 0. 1:8080/400/Hello Async Await 2"; let res = reqwest::get(url). await. unwrap(); let txt = res. text(). await. unwrap(); println!("{txt}"); } Besides using the reqwest API, I also changed the message we send. Most HTTP clients don't return the raw HTTP response to us and usually only provide a convenient way to get the body of the response, which up until now was similar for both our requests. That should be all we need to change, so let's try to run our program by writing cargo run : Running `target\debug\a-rust-futures. exe` Program starting thread 'main' panicked at C:\Users\cf\. cargo\registry\src\index. crates. io-6f17d22bba15001f\tokio-1. 35. 0\src\net\tcp\stream. rs:160:18: there is no reactor running, must be called from the context of a Tokio 1. x runtime Okay, so the error tells us that there is no reactor running and that it must be called from the context of a Tokio 1. x runtime. Well, we know there is a reactor running, just not the one reqwest expects, so let's see how we can fix this. We obviously need to add Tokio to our program, and since Tokio is heavily feature-gated (meaning that it has very few features enabled by default), we'll make it easy on ourselves and enable all of them: cargo add tokio@1--features full According to the documentation, we need to start a Tokio runtime and explicitly enter it to enable the reactor. The enter function will return Enter Guard to us that we can hold on to it as long as we need the reactor up and running.