code: private void prefetch() {
  		if (bufs.isEmpty()) {
  			socket.read()
  					.whenResult(buf -> {
  						if (buf != null) {
  							bufs.add(buf);
  						} else {
  							readDone = true;
  							closeIfDone();
  						}
  					})
  					.whenException(this::close);
  		}
  	}
docs: endregion