So I looked at this code, and I could find no reason for action to be null as a consequence of a sync message, unless sync were sent only as "end" messages in the past. _process.readMessage (as it stands currently in the Storm code), reads a string and then parses it. If you look at readString, if only an "end" was received readString will return an empty string, which will translate to a null message. But for a sync message of the form: {"command":"sync"}, I can see no reason why action would be null.