@Override
  public void restRequest(RestRequest request, Callback<RestResponse> callback, String routeKey)
  {
    this.restRequest(request, new RequestContext(), callback, routeKey);
  }
@Test
  public void testRouteLookupClientCallback()
    throws InterruptedException, ExecutionException, TimeoutException
  {
    RouteLookup routeLookup = new SimpleTestRouteLookup();

    final D2Client d2Client = new D2ClientBuilder().setZkHosts("localhost:2121").build();
    d2Client.start(new FutureCallback<>());
    RouteLookupClient routeLookupClient = new RouteLookupClient(d2Client, routeLookup, "WestCoast");
    RestRequest dummyRestRequest = new RestRequestBuilder(URI.create("d2://simple_uri")).build();
    FutureCallback<RestResponse> futureCallback = new FutureCallback<>();
    routeLookupClient.restRequest(dummyRestRequest,futureCallback, "5555");

    try
    {
      RestResponse response = futureCallback.get(10, TimeUnit.SECONDS);
      Assert.fail("Unexpected success, request should have thrown a ServiceUnavailableException");
    }
    catch (Exception e)
    {
      String message = e.getMessage();
      if (!message.contains("_serviceName=simple_uriWestCoast5555Foo"))
      {
        Assert.fail("request was not rewritten to point at the d2 service simple_uriWestCoast5555Foo");
      }
    }
  }