Whenever I see timeouts being used as a workaround for an async response I get nervous. You’re already unsure - 500? 750? 1000? Where do you stop? You likely end up penalising everyone to cater for the slowest response you’ve found to date.
I’m with @serkandurusoy on this - there has to be a better way and if the “on completion” callback is not working as expeced then it may be possible to use Tracker.