diff --git a/JavaScript/client.js b/JavaScript/client.js
index 8644fa8..6630242 100644
--- a/JavaScript/client.js
+++ b/JavaScript/client.js
@@ -27,7 +27,11 @@ class Client {
static async getInstance(req, res) {
const client = new Client(req, res);
- await Session.restore(client);
+ try {
+ await Session.restore(client);
+ } catch {
+ throw new Error("Couldn't restore session");
+ }
return client;
}
diff --git a/JavaScript/server.js b/JavaScript/server.js
index daa7125..bc8f4cc 100644
--- a/JavaScript/server.js
+++ b/JavaScript/server.js
@@ -5,6 +5,8 @@ const http = require('node:http');
const Client = require('./client.js');
const Session = require('./session.js');
+const INVALID_TOKEN_CODE = 498;
+
const routing = {
'/': async () => '
welcome to homepage
',
'/start': async (client) => {
@@ -46,7 +48,13 @@ const types = {
};
http.createServer(async (req, res) => {
- const client = await Client.getInstance(req, res);
+ try {
+ const client = await Client.getInstance(req, res);
+ } catch {
+ res.statusCode = INVALID_TOKEN_CODE;
+ res.end();
+ return;
+ }
const { method, url, headers } = req;
console.log(`${method} ${url} ${headers.cookie}`);
const handler = routing[url];
diff --git a/JavaScript/session.js b/JavaScript/session.js
index ea66627..d845d28 100644
--- a/JavaScript/session.js
+++ b/JavaScript/session.js
@@ -43,7 +43,10 @@ class Session extends Map {
if (sessionToken) {
return new Promise((resolve, reject) => {
storage.get(sessionToken, (err, session) => {
- if (err) reject(new Error('No session'));
+ if (err) {
+ reject(new Error('No session'));
+ return;
+ }
Object.setPrototypeOf(session, Session.prototype);
client.token = sessionToken;
client.session = session;