	@Test(expected = ExecutionException.class)
	public void itShouldCallOnExceptionOfCallbackWhenChosenServerIsNotActive() throws ExecutionException, InterruptedException {

		RpcClientConnectionPoolStub pool = new RpcClientConnectionPoolStub();
		RpcSenderStub connection2 = new RpcSenderStub();
		RpcSenderStub connection3 = new RpcSenderStub();
		int shardsAmount = 3;
		ShardingFunction<Integer> shardingFunction = item -> item % shardsAmount;
		RpcStrategy shardingStrategy = sharding(shardingFunction,
				servers(ADDRESS_1, ADDRESS_2, ADDRESS_3));

		// we don't add connection for ADDRESS_1
		pool.put(ADDRESS_2, connection2);
		pool.put(ADDRESS_3, connection3);
		RpcSender sender = shardingStrategy.createSender(pool);

		CompletableFuture<Object> future1 = new CompletableFuture<>();
		CompletableFuture<Object> future2 = new CompletableFuture<>();
		CompletableFuture<Object> future3 = new CompletableFuture<>();

		sender.sendRequest(0, 50, forFuture(future1));
		sender.sendRequest(1, 50, forFuture(future2));
		sender.sendRequest(2, 50, forFuture(future3));

		assertEquals(1, connection2.getRequests());
		assertEquals(1, connection3.getRequests());
		future1.get();

	}