Web Socket Issue - halt with no error after write(TCPSocket)

Okay as a prerequisite I am new to the language and am likely doing something incorrectly.
I am using the Sockets module from the standard library.
I am writing a client side julia program that needs to read two Float64s from a server and then write two Float64s to a server every user defined timestep.

Since IO blocks I read via a remotecall and then (at the moment) I write in my main process. After I write I experience a halt with no error or exception.

The culprit is the eof() function called in my remote call. If I remove it then I do not get an error. But why? I’m aware eof() blocks but why is that affecting my main thread? Is this because I’m attempting to read and write to the same stream?

The lack of an immediate error is a bit of an issue.

Here is the function I remote call:

function ReadAsync(sock::Sockets.TCPSocket)

    try
        ## Ensures we read the last entry in the socket buffer
        println("   ASYNC Begin.")
        timestamp = 0.0
        funcVal = 0.0

        arr = Float64[]
        while !eof(sock)
        # push!(arr, read(sock, Float64))
        end

        println("   ASYNC END.")
        return timestamp, funcVal

    catch e
        println("caught it $e")
    end
    
end

Here is my main function

function main()

    clientTime = 0.0
    lastHeardTimeout = 10.0
    dt = 8.0
    timestamp = 0.0
    funcVal = 0.0

    sock = Sockets.connect("localhost", 50009);

    println("Ready and waiting...")

    # Start a thread that checks for reads.
    r = remotecall(ReadAsync, 1, sock)

    startTime = time();
    lastHeardTime = time();
    try
    
        while true
    
            elapsed = time() - startTime

            if elapsed > dt
            
                clientTime = clientTime + dt

                # I would normally check for reads here!

                elapsedHeardTime = time() - lastHeardTime
        
                if (elapsedHeardTime < lastHeardTimeout && iswritable(sock))

                    println("Socket Writable.")
                    numBytes = write(sock, clientTime)
                    println("Socket Written.")

                    # It halts here. "Shown" is never reached.
                    println("Shown.")
                    write(sock, funcVal)
        
                else 
                    println("I haven't heard from the server in awhile...")
                end

                startTime = time()    
            end
        end
    
    catch e
        println("caught it $e")
        close(sock)
    end

    close(sock)
end