public Reply fetchDataConnectionReply() throws FileNotFoundException,
            IOException {
        ReplyWorker worker = new ReplyWorker(getDataSocket(), this);
        worker.start();
        while (worker.getStatus() == ReplyWorker.UNKNOWN) {
            try {
                Thread.sleep(20);
            } catch (InterruptedException ie) {
            }
        }
        if (worker.getStatus() == ReplyWorker.FINISHED) {
            return worker.getReply();
        } else {
            if (worker.getCaughtException() instanceof FileNotFoundException)
                throw (FileNotFoundException) worker.getCaughtException();
            else
                throw (IOException) worker.getCaughtException();
        }
    }