https://www.youtube.com/watch?v=L7X0vpAU-sU so... This is a runtime. If you write libraries, don't use a runtime but use futures directly. There are other runtimes: - async-std - tokio - fuchsia - bastion (reliability) - wasm-bindgen-futures https://www.youtube.com/watch?v=skos4B5x7qE - futures (pollables) - executor (schedules polling, hands over to reactor on io) - reactor (waits on i/o to hand over to executor) Core issue in initial design was due to self-referential structures, which cannot be moved. Solved by requiring that futures cannot be moved, i.e. "pinned".