What does "events not pushed from the main thread" mean?

What does “events not pushed from the main thread” mean?
Are these user events push by another thread? Could it ever be non-user events like keyboard, window focus and mouse moment? I specifically want my AppIterate and AppEvent to only ever run on the main thread and never concurrently. I only support desktops (windows, mac, linux)

The docs for SDL_AppEvent says:

There is (currently) no guarantee about what thread this will be called from; whatever thread pushes an event onto SDL’s queue will trigger this function. SDL is responsible for pumping the event queue between each call to SDL_AppIterate, so in normal operation one should only get events in a serial fashion, but be careful if you have a thread that explicitly calls SDL_PushEvent. SDL itself will push events to the queue on the main thread.

This makes it sound like SDL_AppIterate will get called on whatever thread that pushed the event (using SDL_PushEvent) but I’m not sure how to interpret the first part “There is (currently) no guarantee about what thread this will be called from;”. Does it mean that this is the current behaviour but SDL doesn’t guarantee it so it shouldn’t be relied upon because it might change in the future?

The last part “SDL itself will push events to the queue on the main thread.” makes it pretty clear that SDL always push events from the main thread meaning that SDL_AppIterate will run on the main thread for those events. It seems consistent with what Slouken wrote here about not having to worry about multi-threaded issues (unless you yourself push events from other threads). I’m pretty sure this is the intention, and will continue to be, because it would be a nightmare to deal with if SDL_AppIterate got called from other threads that were out of our control. If you yourself push events from other threads, that’s different, that’s a decision you’ve made so it seems fair to expect you to deal with the consequences.