splice: only return -EAGAIN if there's hope of more data