I had a lot of issues trying to get continuation-local-storage (cls) working on a hapi.js app with pm2 in cluster_mode. Long story short, my mistake was wrapping cls around my server.start() when I should have been running it in a request handler. Here is the code you should use to get all this working:
var cls = require('continuation-local-storage');
var ns = cls.createNamespace('mySession');
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 80 });
// make sure this is the very first handler you add to the server
server.ext('onRequest', function (request, reply) {
ns.bindEmitter(request.raw.req);
ns.bindEmitter(request.raw.res);
ns.run(function () { reply.continue(); });
});
server.start();