That is up for discussion. It shows the error because internally an error is thrown that activates the shutdown. Since the user is responsible for the error being thrown in this case, it is arguably “as intended” an could be shown differently.
This is just the .Net message for cancelling a task. It does not have any idea what cancelled it. The task cancellation trigger could be a timer, a side-effect from something else stopping, the user, etc.
We can replace the message with another sentence, but I think the underlying issue is that we are lacking information about the cause of the cancellation. We could (do?) keep track of the user issued cancellation and show something different here.
The text “Stop now” text seems to be on the commandline UI? My description until now assumed this was considering the status bar “Stop” button(s).
For some reason there is no soft-stop for the commandline in neither ngax nor ngclient. Both frontends implement the stop here as abort, so they should do the same at least.