If you drop the http::Client::send future, e.g. with a FutureExt::timeout here c184831 , wasmtime will trap because the parent resourceFutureIncomingResponse is dropped before its child Pollable.
One way to fix that is to replace the Future rust generates from the async fn with a struct of our own with the field ordering such that the child Pollable drops first, e.g. https://github.com/yoshuawuyts/wstd/blob/pch/scratchpad_reactor_refactors/src/http/client.rs#L33-L46 https://github.com/yoshuawuyts/wstd/blob/pch/scratchpad_reactor_refactors/src/http/client.rs#L83-L115
This restructuring motivated me to make Reactor::wait_for take a &Pollable instead of take ownership e.g. c740f1b which in turn creates more problems - now a simple task::sleep will panic.
The plan currently is we need to refactor the executor to resolve the architectural problems this revealed.