@startuml participant Component as a participant Other as b [-> a : activate(ct) activate a <-- a : promise a -> a : onActivating(ct) activate a a -> b : doAsyncWork(ct) deactivate a deactivate a activate b [-> b : ct.cancel b --> a : reject(Cancelled) deactivate b activate a a -> a : setFailState() [<-- a : reject(Cancelled) @enduml