Digging into the code a bit I see it just is starting a subprocess which makes sense now why it is terminating on the sigterm/ctrl+c (signal it sent to whole process tree)
https://github.com/pulumi/pulumi/blob/master/sdk/python/lib/pulumi/automation/_cmd.py#L55
It seems like this could be enhanced to deal with a cancelation/async run that way it can be gracefully stopped rather than abruptly terminated.