Be careful. Methods and publications have awareness of the connection (the client) they are running on behalf of. If the long-running process is outside of the connection context it’s likely to be global to all users, which may not be what you want. There are ways of dealing with this (I haven’t looked at Bulletproof Meteor, so don’t know if it’s covered there), but it’s not necessarily as straightforward as you may think.
Instead of having the client request data, you could push it down to the client using just a raw websocket, or you could use the Streamer package that lets you send events over DDP and have the client subscribe to them. So it would look like
streamer.on('progress-abc', function({ progress }) {
alert('the progress is now ' + progress * 10 );
});
The package lets you do allow/deny rules as well if you need it. I’ve used Streamer in the ProseMeteor project and really enjoyed it for things where I want to have data pushed to the client without a subscription or database.