private CommandResult sendToRemote(Object... keysValues) { HashMap<String, Object> packet = Ut.mapFromArray(keysValues); synchronized (access) { if (isClosed()) { CommandResult closedResult = new CommandResult(0); closedResult.sendFailure(new EOFException("farcall is closed")); return closedResult; } packet.put("serial", outSerial); CommandResult result = new CommandResult(outSerial); // synchronized (resultQueue) { resultQueue.put(outSerial, result); // } try { connector.send(packet); } catch (IOException e) { // synchronized (resultQueue) { resultQueue.remove(outSerial); // } result.sendFailure(e); close(); return result; } outSerial++; return result; } }