Skip to content

Commit 023bed6

Browse files
committed
🐛 returns a rejected promise if the message ID is already reserved
1 parent b4446d1 commit 023bed6

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

session.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,12 @@ export class Session {
9292
return Promise.reject(new Error("Session is not running"));
9393
}
9494
const { reservator } = this.#running;
95-
return reservator.reserve(msgid);
95+
try {
96+
// NOTE: It throws an error instead returns a rejected promise.
97+
return reservator.reserve(msgid);
98+
} catch (err) {
99+
return Promise.reject(err);
100+
}
96101
}
97102

98103
/**

session_test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
pop,
1313
push,
1414
} from "https://deno.land/x/[email protected]/mod.ts";
15+
import { AlreadyReservedError } from "https://deno.land/x/[email protected]/errors.ts";
1516
import { buildRedrawCommand } from "./command.ts";
1617
import { buildMessage, Message } from "./message.ts";
1718
import { Session } from "./session.ts";
@@ -99,6 +100,21 @@ Deno.test("Session.recv", async (t) => {
99100
},
100101
);
101102

103+
await t.step(
104+
"rejects an error if the message ID is already reserved",
105+
async () => {
106+
const { session } = createDummySession();
107+
108+
session.start();
109+
session.recv(-1);
110+
111+
await assertRejects(
112+
() => session.recv(-1),
113+
AlreadyReservedError,
114+
);
115+
},
116+
);
117+
102118
await t.step(
103119
"waits a command response message and resolves with it",
104120
async () => {

0 commit comments

Comments
 (0)