I don't see how ReadBlock could ever cause a deadlock. When it gets to EOF, it returns the last piece, even if it's less than asked. Can you be more specific about the scenario?