Restructure io request queue logic to be clearer