Problem com luasocket

Estou tentando ler alguns dados (binários) de um soquete lua, mas o código acima não encerra o loop de repetição. Como posso saber que o final do fluxo chegou?

client = require("socket")
client = socket.connect("www.google.com",80)
client:send("GET / HTTP/1.1\n\n")
repeat
  print "read"
  line = client:receive(512)
  print "read done"
  print(#line)
until line==""

print "all done"

Output is
read
read done
512
read

Atualiza

Parece ser o problema que o formulário de recebimento (número) espera o número exato de bytes e aguarde por eles. Mas se eu não sei quantos bytes restam, como fazer isso? (a solicitação http é apenas um exemplo, refiro-me a uma solicitação genérica para ler bytes de um soquete)

lua 5.1.3