Skip to content

Commit 2e19e9c

Browse files
author
SunriseFox
committed
[Workaround] no longer reject promises while enqueueCommand.
1 parent 32e768c commit 2e19e9c

File tree

10 files changed

+51
-13
lines changed

10 files changed

+51
-13
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,7 @@ The IMAP client has several events you can attach to by setting a listener
677677
### Handling fatal error event
678678

679679
The invocation of `onerror` indicates an irrecoverable error. When `onerror` is fired, the connection is already closed, hence there's no need for further cleanup.
680+
if no `onerror` callback is set, it will throw the error.
680681

681682
## Get your hands dirty
682683

dist/client.js

Lines changed: 22 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/command-parser.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/compression.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/imap.js

Lines changed: 11 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/logger.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

res/compression.worker.blob

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

src/client.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,10 @@ export default class Client {
105105
clearTimeout(this._idleTimeout)
106106

107107
// propagate the error upwards
108-
this.onerror && this.onerror(err)
108+
if (!this.onerror) {
109+
throw err
110+
}
111+
this.onerror(err)
109112
}
110113

111114
//

src/imap.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,10 @@ export default class Imap {
162162
* @returns {Promise} Resolves when the socket is closed
163163
*/
164164
close (error) {
165+
if (this._enteredClosingState) {
166+
return Promise.resolve()
167+
}
168+
this._enteredClosingState = true
165169
return new Promise((resolve) => {
166170
var tearDown = () => {
167171
// fulfill pending promises
@@ -257,7 +261,10 @@ export default class Imap {
257261
var tag = 'W' + (++this._tagCounter)
258262
request.tag = tag
259263

260-
return new Promise((resolve, reject) => {
264+
return new Promise(resolve => {
265+
var reject = error => {
266+
return resolve(this.close(error))
267+
}
261268
var data = {
262269
tag: tag,
263270
request: request,

0 commit comments

Comments
 (0)