diff --git a/packages/isomorphic-core/src/imap-connection.es6 b/packages/isomorphic-core/src/imap-connection.es6 index 14189696b..d505f0a6d 100644 --- a/packages/isomorphic-core/src/imap-connection.es6 +++ b/packages/isomorphic-core/src/imap-connection.es6 @@ -346,7 +346,11 @@ class IMAPConnection extends EventEmitter { clearTimeout(socketTimeout) resolve(...args) } - return callback(cbResolve, reject) + const cbReject = (error) => { + clearTimeout(socketTimeout) + reject(convertImapError(error)) + } + return callback(cbResolve, cbReject) }) .finally(() => { if (this._imap) { diff --git a/packages/isomorphic-core/src/imap-errors.js b/packages/isomorphic-core/src/imap-errors.js index 63aefabe1..1222952e1 100644 --- a/packages/isomorphic-core/src/imap-errors.js +++ b/packages/isomorphic-core/src/imap-errors.js @@ -82,7 +82,7 @@ function convertImapError(imapError) { error.source = imapError.source return error } - if (imapError.message.includes('System Error')) { + if (/system error/i.test(imapError.message)) { // System Errors encountered in the wild so far have been retryable. error = new RetryableError(imapError) error.source = imapError.source