Skip to content

Context gets lost in promise when deployed as a serverless app #134

@rajasekhar911

Description

@rajasekhar911

I have a NodeJS application using Node8 and Express 4. Am using CLS to store an API token at the time of login and to retrieve the token further down the line. This token is in session and is set to CLS on every request (so that I dont have to pass the request object to each and every method) so that I can retrieve it at a later time in the nth function.

app.use(function(req, res, next) {
  var getNamespace = require('continuation-local-storage').getNamespace,
  authSession = getNamespace('authSession');
  var token = "";
  if(req.session && req.session.auth){
    token = req.session.auth.token;
  }
  authSession.bindEmitter(req);
  authSession.bindEmitter(res);

  authSession.run(function() {
    authSession.set('authToken', token);
    next();
  });
});

This is working fine as a node js app. But when I try to run it as a serverless app, the context does not seem to be set properly. Am using serverless-http package.

I tried to put the patch mentioned in issue 116 ( [https://github.com//issues/116] ). But the interesting part is context.res is undefined in the finally block.

How can I proceed fixing this?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions