pack empty messages as empty arrays instead of nils to ease worker development
erase the callback after stopping the watcher because the watcher lifetime could be bound to that callback