express-session doesn't work with expressMiddleware in apollo-server 4
[express-session](https://www.npmjs.com/package/express-session) does not seem to work with `expressMiddleware` in apollo-server v4. The `session` object is there, but the session state never updates. This worked in apollo-server v3, and does work with `startStandaloneServer `.

## Packages

```
    "@apollo/server": "^4.2.1",
    "body-parser": "^1.20.1",
    "cors": "^2.8.5",
    "express": "^4.18.2",
    "express-session": "^1.17.3",
    "graphql": "^16.6.0"
```

## Reproducible example

```
import { ApolloServer } from "@apollo/server";
import { expressMiddleware } from "@apollo/server/express4";
import { ApolloServerPluginDrainHttpServer } from "@apollo/server/plugin/drainHttpServer";
import express from "express";
import http from "http";
import cors from "cors";
import bodyParser from "body-parser";
import session from "express-session";

export const typeDefs = `
  type Query {
    hello: String
  }
`;

export const resolvers = {
  Query: {
    hello: (parent, args, context) => {
      const session = context.req.session;

      // session.views is always undefined, so this query always
      // returns 1

      if (session.views) {
        session.views++;
      } else {
        session.views = 1;
      }

      return session.views;
    },
  },
};

const sess = {
  secret: "keyboard cat",
  cookie: {},
};

interface MyContext {
  req?: any;
}

const init = async () => {
  const app = express();

  app.use(session(sess));

  const httpServer = http.createServer(app);

  const server = new ApolloServer<MyContext>({
    typeDefs,
    resolvers,
    plugins: [ApolloServerPluginDrainHttpServer({ httpServer })],
  });

  await server.start();

  app.use(
    "/graphql",
    cors<cors.CorsRequest>(),
    bodyParser.json(),
    expressMiddleware(server, {
      context: async ({ req }) => ({ req }),
    })
  );

  // here the session properly updates
  app.get("/test", (req, res) => {
    if (req.session.views) {
      req.session.views++;
    } else {
      req.session.views = 1;
    }
    res.end(`views ${req.session.views}`);
  });

  await new Promise<void>((resolve) =>
    httpServer.listen({ port: 4000 }, resolve)
  );
  console.log(`🚀 Server ready at http://localhost:4000/`);
};

init();
```

The GraphQL resolver is supposed to return 1, 2, 3, etc, but only returns 1.

The Express API route /test there correctly returns 1, 2, 3, etc.
