public ChannelFuture awaitUninterruptibly(long timeoutMillis) throws Exception {
ChannelFuture response;
// poll() waits until message arrives in queue or time runs out
response = this.answer.poll(timeoutMillis, TimeUnit.MILLISECONDS);
if (response == null || response.isSuccess() == false) {
throw new CommunicationException("Operation could not be completed");
}
return response;
}