the server doIO code, specifically for read is inefficiently handling requests.
dio does the following for reads
if new request received: read length and return
else read request body and return
as a result we poll the selector twice for each request from a client.
we should just read the request fully, reducing selector polling by half