add read_nonblock to the delegate methods