The problem is on the first run the serverResponse is “undefined” but running Session.get(‘serverResponse’) on the console reveals a result - this make me think that the script continues before the Method is finished.
Meteor.call accepts a function argument as its last parameter. This function is called a ‘callback’ and is executed after the data from Meteor.call is returned. That’s why your session is not set if you try to print it in the next line. From the docs:
Optional callback, which is called asynchronously with the error or result after the method is complete.
You can convert your Meteor.call into a synchronous function using Meteor.wrapAsync(). Docs.