processEventByAsync

fun StateMachine.processEventByAsync(event: Event, argument: Any? = null, coroutineContext: CoroutineContext = EmptyCoroutineContext, coroutineStart: CoroutineStart = CoroutineStart.DEFAULT): Deferred<ProcessingResult>

Processes event in async fashion (using async() to start new coroutine) and returns result as Deferred.

This API requires StateMachine's CoroutineScope so it throws if called on machines created by createStdLibStateMachine.

This method is not suspendable like original StateMachine.processEvent, so it can be called from any context easily.