Canceling a RunAction stops its container
bump deps
convert ActionRunner.Perform to synchronous API

This is much more convenient to implement and reason about.