TODO
* restart on transient network errors
* don't start a new request for small forward seeks
* keep cache for backward seeks
* maybe remove pin_project
* use `poll?`, ie. Try for Poll
* remove unwraps, replace with expects or explain


ready macro -> ready method
https://github.com/rust-lang/rust/issues/89780
