Skip to content

Commit fbb3bfc

Browse files
committed
Add similar promise variables to read() and close() as seen in query()
1 parent 9d2c977 commit fbb3bfc

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

Diff for: packages/pg-cursor/index.js

+30-10
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class Cursor extends EventEmitter {
1717
this._queue = []
1818
this.state = 'initialized'
1919
this._result = new Result(this._conf.rowMode, this._conf.types)
20+
this._Promise = this._conf.Promise || global.Promise
2021
this._cb = null
2122
this._rows = null
2223
this._portal = null
@@ -198,6 +199,14 @@ class Cursor extends EventEmitter {
198199
}
199200

200201
close(cb) {
202+
var promise
203+
204+
if (!cb) {
205+
promise = new this._Promise((resolve, reject) => {
206+
cb = (err) => (err ? reject(err) : resolve())
207+
})
208+
}
209+
201210
if (!this.connection || this.state === 'done') {
202211
if (cb) {
203212
return setImmediate(cb)
@@ -213,23 +222,34 @@ class Cursor extends EventEmitter {
213222
cb()
214223
})
215224
}
225+
226+
// Return the promise (or undefined)
227+
return promise
216228
}
217229

218230
read(rows, cb) {
219-
if (this.state === 'idle' || this.state === 'submitted') {
220-
return this._getRows(rows, cb)
221-
}
222-
if (this.state === 'busy' || this.state === 'initialized') {
223-
return this._queue.push([rows, cb])
224-
}
225-
if (this.state === 'error') {
226-
return setImmediate(() => cb(this._error))
231+
var promise
232+
233+
if (!cb) {
234+
promise = new this._Promise((resolve, reject) => {
235+
cb = (err, rows) => (err ? reject(err) : resolve(rows))
236+
})
227237
}
228-
if (this.state === 'done') {
229-
return setImmediate(() => cb(null, []))
238+
239+
if (this.state === 'idle' || this.state === 'submitted') {
240+
this._getRows(rows, cb)
241+
} else if (this.state === 'busy' || this.state === 'initialized') {
242+
this._queue.push([rows, cb])
243+
} else if (this.state === 'error') {
244+
setImmediate(() => cb(this._error))
245+
} else if (this.state === 'done') {
246+
setImmediate(() => cb(null, []))
230247
} else {
231248
throw new Error('Unknown state: ' + this.state)
232249
}
250+
251+
// Return the promise (or undefined)
252+
return promise
233253
}
234254
}
235255

0 commit comments

Comments
 (0)