This is derived work from the
[`pollster`](https://crates.io/crates/pollster/0.3.0) crate,
including the following modifications:

- remove the macro and all uses of unsafe.
- expose as an `ExtFuture` trait method.
- misc refactors.
