Skip to content

Commit 0e93729

Browse files
committed
Build deno [autogenerated commit]
1 parent 5913a8c commit 0e93729

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

.deno/adapters.ts

+20-6
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,21 @@ import { bufToString, isBuf } from './buffer-deno.ts';
66
import { compareVersions, nullIsh } from './utils.ts';
77
declare var __non_webpack_require__: any;
88

9-
const delay = (time: number | undefined) => new Promise(done => setTimeout(done, time ?? 0));
9+
10+
// setImmediate does not exist in Deno
11+
declare var setImmediate: any;
12+
13+
// see https://github.com/oguimbal/pg-mem/issues/170
14+
function timeoutOrImmediate(fn: () => void, time: number) {
15+
if (time || typeof setImmediate === 'undefined') {
16+
return setTimeout(fn, time);
17+
}
18+
// nothing to wait for, but still executing "later"
19+
// in case calling code relies on some actual async behavior
20+
return setImmediate(fn);
21+
}
22+
23+
const delay = (time: number | undefined) => new Promise<void>(done => timeoutOrImmediate(done, time ?? 0));
1024

1125
function replaceQueryArgs$(this: void, sql: string, values: any[]) {
1226
return sql.replace(/\$(\d+)/g, (str: any, istr: any) => {
@@ -79,7 +93,7 @@ export class Adapters implements LibAdapters {
7993

8094
once(what: string, handler: () => void) {
8195
if (what === 'connect') {
82-
setTimeout(handler, queryLatency ?? 0);
96+
timeoutOrImmediate(handler, queryLatency ?? 0);
8397
}
8498
}
8599

@@ -113,17 +127,17 @@ export class Adapters implements LibAdapters {
113127
try {
114128
const result = this.adaptResults(query, that.db.public.query(pgquery.text));
115129
if (callback) {
116-
setTimeout(() => callback(null, result), queryLatency ?? 0);
130+
timeoutOrImmediate(() => callback(null, result), queryLatency ?? 0);
117131
return null;
118132
} else {
119-
return new Promise(res => setTimeout(() => res(result), queryLatency ?? 0));
133+
return new Promise(res => timeoutOrImmediate(() => res(result), queryLatency ?? 0));
120134
}
121135
} catch (e) {
122136
if (callback) {
123-
setTimeout(() => callback(e), queryLatency ?? 0);
137+
timeoutOrImmediate(() => callback(e), queryLatency ?? 0);
124138
return null;
125139
} else {
126-
return new Promise((_, rej) => setTimeout(() => rej(e), queryLatency ?? 0));
140+
return new Promise((_, rej) => timeoutOrImmediate(() => rej(e), queryLatency ?? 0));
127141
}
128142
}
129143
}

0 commit comments

Comments
 (0)