Support reentrance and asynchronous transitions

@rjrjr Updated javadoc here.