Maybe I'm missing something, but how do you get a `Future` for receiving from a channel?
Even better, how would I write my own `Future` in a way that supports this `select` and is compatible with any reasonable `Io` implementation?