@Override
    public Response apply(final ContainerRequestContext req) {
      // Suspend current request
      final ProcessingContext processingContext = processingContextProvider.get();
      processingContext.suspend();

      Executors.newSingleThreadExecutor()
          .submit(
              new Runnable() {

                @Override
                public void run() {
                  try {
                    Thread.sleep(500);
                  } catch (InterruptedException ex) {
                    ex.printStackTrace(System.err);
                  }

                  // Returning will enter the suspended request
                  processingContext.resume(Response.ok().entity(responseContent).build());
                }
              });

      return null;
    }