Some places have self.stream_on_network.write().next().await which may lead to locking the stream for a long time.
Some places use .timeout from async-std to avoid locking it for too long, but the timeout is arbitrary. Instead, it would be better to use .now_or_never() from future crate.
This would make it easier to use also make the executor abstract on #25