code: void writeLine(String line) throws IOException {
      checkState(isRunning(), "Cannot read items from a %s StreamService", state());
      checkState(socketWriter != null, "Attempted to write to the socket before it was opened.");
      try {
        socketWriter.write(line);
        socketWriter.write('\n');
        // We need to flush since this is a back and forth lockstep protocol, buffering can cause 
        // deadlock! 
        socketWriter.flush();
      } catch (IOException e) {
        Closeables.close(socketWriter, true);
        notifyFailed(e);
        throw e;
      }
    }
docs: Write a line of data to the worker process over the socket.
  
  <p>N.B. Writing data via {@link #writeLine(String)} is only valid once the underlying socket
  has been opened.  This should be fine assuming that socket writes are only in response to
  socket eads (which is currently the case), so there is no way that a write could happen prior
  to the socket being opened.