Adapts a future that resolves to something into one that resolves to
(), for use as a Timer::Sleep.
This is not redundant, and it is not a mistake. Two of this
project’s clocks have a native timer whose Output is not ():
async_io::Timer resolves to the std::time::Instant at which it
fired, and hclient-fetch’s SendJsFuture resolves to
Result<JsValue, JsValue>. While Timer::sleep was an RPITIT both
were discarded invisibly inside an async block; with a named
associated type the discard has to be written down, and this is where
it is written down once instead of twice.
F: Unpin rather than a pin projection: every timer this wraps is
Unpin already, and this workspace forbids unsafe, so the safe
projection is the only one available and the bound is honest about it.