@Test
public void pushFailedCallbackToEndOfQueue() throws Exception {

  TxEvent event = someEvent();
  doThrow(AlphaException.class).doThrow(AlphaException.class).doNothing().when(underlying).compensate(event);
  pushBack.compensate(event);
  assertThat(runnables.size(), is(2));
  assertThat(runnables.poll(), is(NO_OP_RUNNABLE));
  // failed again and pushed back itself to queue
  runnables.poll().run();
  assertThat(runnables.size(), is(1));
  runnables.poll().run();
  verify(underlying, times(3)).compensate(event);
}