Most of the code changes in this function are whitespace -- indentation.  There is a new overload of the function which takes a `shutdown-reason-promise` with the implementation against the old signature just calling the new overload with an instance of a promise.  The call to `initialize-shutdown-service!` passes through the `shutdown-reason-promise`.  The implementations of the `init` and `start` functions in the TrapperkeeperApp have try/catch blocks around their calls to `run-lifecycle-fns` in order to log any `Throwable` which might have been thrown during those calls.