You could argue the bug happened exactly because hyper's poll_flush treats flushing some but not all data as a successful return, not an error case.