use select on socket for async reads