String
is destructive, it empties your buffer. You can do something like
io = Base.BufferStream()
ch=Channel{Dict}(10)
@async while !eof(io)
bytes = readavailable(io)
text = String(bytes)
println(text)
put!(ch, JSON3.read(text))
end