Hi Becky,
Sorry for taking some time to answer, it's a bit chaotic here in the moment.
In v3.3.3 jatos.js didn't have the 'HTTP Loop' yet. This takes care of sending result data and other HTTP requests to the JATOS server while providing some guarantees like keeping the order of the result data sent (important with jatos.attachResultData) and that all data being sent before the component finishes. It's a really useful thing to have, especially if you use OpenSesame/OSWeb experiments.
But I had a look at the old version (v3.3.3) of jatos.js and even there your example cannot lead to a FINISHED state and 'none' result data. Extremely simplified it looks like this (in v3.3.3):
jatos.submitResultData = function (resultData, onSuccess, onError) {
jatos.jQuery.ajax({
...
success: function () {
// call success callback function
},
error: function (err) {
// call error callback function
}
});
};
It waits for the submitting of the result data and only then calls the jatos.startNextComponent callback function. And since your result data are at least '[]' I can't see a way for the result data to be empty. But maybe you have another jatos.submitResultData in your code somewhere? This one can overwrite the data. Or you have another jatos.start*Component somewhere that finishes the component prematurely? Another thing: is there something weird in the logs around this time?
Anyway, updating your JATOS is a good idea. This 'HTTP Loop' takes extra care for result data sending.
Best,
Kristian