final OptionMap options = getOptions(configuration);
final CallbackHandler actualHandler = handler != null ? handler : new AnonymousCallbackHandler();
String clientBindAddress = configuration.getClientBindAddress();
if (clientBindAddress == null) {
return endpoint.connect(configuration.getUri(), options, actualHandler, configuration.getSslContext());
} else {
InetSocketAddress bindAddr = new InetSocketAddress(clientBindAddress, 0);
InetSocketAddress destAddr = new InetSocketAddress(configuration.getUri().getHost(), configuration.getUri().getPort());
return endpoint.connect(REMOTE_PROTOCOL, bindAddr, destAddr, options, actualHandler, configuration.getSslContext());
}