chap16: nonblock io