It should be queued if  `os_call_shell` is not being executed:

- SIGINT is sent
- `signal_cb` pushes an event to the queue
- one of the main loops intercepts K_EVENT and consequently sets got_int
- in the next loop it will take the necessary action

I agree that this is inconsistent though(should `os_call_shell` also process the event queue ?)