lib/ernicorn/server.rb
def read(len)
      data = ''
      while data.bytesize < len
        data << @client.kgio_read!(len - data.bytesize)
      end
      data
    end
def read(len)
      data = ''
      while data.bytesize < len
        data << @client.kgio_read!(len - data.bytesize)
      end
      data
    end
We pass ourselves as both input and output to Ernicorn.process, which
 calls the following blocking read/write methods.