IoFuture<Connection> future;
CallbackHandler actualHandler = handler != null ? handler : new AnonymousCallbackHandler();
WrapperCallbackHandler wrapperHandler = new WrapperCallbackHandler(actualHandler);
future = endpoint.connect(uri, map, wrapperHandler);
Status status = future.await(connectTimeout, TimeUnit.MILLISECONDS);
while (status == Status.WAITING) {
boolean cancel = false;
if (wrapperHandler.isInCall()) {
// Here we know we are blocked waiting for user input so block again for the same time.
status = future.await(connectTimeout, TimeUnit.MILLISECONDS);