public class ResponseFuture {
private final String commandSeq;
private final Channel processChannel;
private final long timeoutMillis;
private final BiConsumer<Command/*request*/, Command/*ack*/> consumer;
private final long beginTimestamp = System.currentTimeMillis();
private final CountDownLatch countDownLatch = new CountDownLatch(1);
private final SemaphoreReleaseOnlyOnce once;
private volatile Command request;
private volatile Command response;
private volatile boolean sendOk = true;
private volatile Throwable cause;
」