@SuppressWarnings("ThrowableNotThrown")
@Test
public void handleMessage_callFailureHandle_methodTransactionThrows() {

    ActorHandlerBase handler = createHandler(ActorHandlerBase.NO_DELAY);
    Transaction transaction = Transaction.<Object>obtain(mImpl, mMessage, mFailureHandler);
    android.os.Message message = android.os.Message.obtain(handler, ActorHandlerBase.MSG_TRANSACTION,
            10, 0, transaction);
    RuntimeException exception = new RuntimeException();
    Mockito.doThrow(exception).when(mMessage).invoke(Mockito.any());
    Mockito.doReturn(mException).when(mMessage).exception();
    handler.handleMessage(message);
    Mockito.verify(mFailureHandler).onUncaughtException(mImpl, mMessage, mException);
    Mockito.verify(mException).initCause(exception);
    // transaction should always be recycled
    Assert.assertNull(transaction.message);
}