summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/timers.ts1
-rw-r--r--js/timers_test.ts14
2 files changed, 14 insertions, 1 deletions
diff --git a/js/timers.ts b/js/timers.ts
index ba9a653a8..0d0e1e69a 100644
--- a/js/timers.ts
+++ b/js/timers.ts
@@ -250,6 +250,7 @@ export function setInterval(
/** Clears a previously set timer by id. AKA clearTimeout and clearInterval. */
export function clearTimer(id: number): void {
+ id = Number(id);
const timer = idMap.get(id);
if (timer === undefined) {
// Timer doesn't exist any more or never existed. This is not an error.
diff --git a/js/timers_test.ts b/js/timers_test.ts
index 88c5ea5ca..65432d4c5 100644
--- a/js/timers_test.ts
+++ b/js/timers_test.ts
@@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
-import { test, assertEquals } from "./test_util.ts";
+import { test, assert, assertEquals } from "./test_util.ts";
function deferred(): {
promise: Promise<{}>;
@@ -231,3 +231,15 @@ test(async function timeoutBindThis(): Promise<void> {
}
);
});
+
+test(async function clearTimeoutShouldConvertToNumber(): Promise<void> {
+ let called = false;
+ const obj = {
+ valueOf(): number {
+ called = true;
+ return 1;
+ }
+ };
+ clearTimeout((obj as unknown) as number);
+ assert(called);
+});