nonblocking process_one (+ change return signature)
bidirectional tunnel communication