@Test
	public void testRollbackSuccess2() throws InvalidProcessStateException, ProcessExecutionException,
			InterruptedException, ExecutionException {

		// test executing component (execution ongoing)
		IProcessComponent<Void> decoratedComponent = TestUtil.rollbackSuccessComponent();
		IProcessComponent<Void> busyComponent = new BusyComponent(decoratedComponent);
		AsyncComponent<Void> ac = new AsyncComponent<Void>(busyComponent);

		ac.execute(); // don't wait for completion

		Future<?> future = null;
		try {
			future = ac.rollback();
		} catch (InvalidProcessStateException | ProcessRollbackException ex) {
			fail(ex.getMessage());
		}

		try {
			future.get();
		} catch (InterruptedException ex) {
			fail(ex.getMessage());
		} catch (ExecutionException ex) {
			if (ex.getCause() instanceof ProcessRollbackException) {
				fail("Should execute successfully.");
			} else {
				throw ex;
			}
		}

		assertTrue(ac.getState() == ProcessState.ROLLBACK_SUCCEEDED);
		assertTrue(ac.getState() == decoratedComponent.getState());
	}