### Question:
TimerHandler implements Handler { @Override public Promise<Response, NeverThrowsException> handle(final Context context, final Request request) { final LogTimer timer = logger.getTimer().start(); return delegate.handle(context, request) .thenAlways(new Runnable() { @Override public void run() { timer.stop(); } }); } TimerHandler(final Handler delegate, final Logger logger); @Override Promise<Response, NeverThrowsException> handle(final Context context, final Request request);  }### Answer:
@Test public void shouldLogStartedAndElapsedMessages() throws Exception { TimerHandler time = new TimerHandler(delegate, logger); Context context = new RootContext(); when(delegate.handle(context, null)) .thenReturn(Promises.<Response, NeverThrowsException>newResultPromise(new Response())); time.handle(context, null).get(); InOrder inOrder = inOrder(timer, delegate); inOrder.verify(timer).start(); inOrder.verify(delegate).handle(context, null); inOrder.verify(timer).stop(); }