fetch inbound data on demand to speedup and fix inbound bisection

This is an attempt to download inbound data in a lazy way.
In fact the else with the return is needed, because we are in while True loop. I may rewrite it with a variable like go_on = True and do a while go_on if you prefer.