in tchannel-core/src/main/java/com/uber/tchannel/api/SubChannel.java [245:266]
protected <V extends Response> TFuture<V> sendRequest(
Request request,
InetAddress host,
int port
) {
OutRequest<V> outRequest = new OutRequest<>(this, request, topChannel.getTracingContext());
if (host != null) {
Connection conn = peerManager.findOrNew(new InetSocketAddress(host, port));
// No retry for direct connections
outRequest.disableRetry();
if (!sendOutRequest(outRequest, conn)) {
outRequest.setFuture();
}
} else if (peers.isEmpty()) {
outRequest.setLastError(ErrorType.BadRequest, new TChannelNoPeerAvailable());
outRequest.setFuture();
} else {
sendOutRequest(outRequest);
}
return outRequest.getFuture();
}