From b96300f0006ca5ba9a80963b944c8c14b5b4f157 Mon Sep 17 00:00:00 2001 From: Juan Tejada Date: Wed, 22 Feb 2017 14:17:52 -0800 Subject: [PATCH] [iso-core] Fix imap error detection! Summary: We were only detecting and classifying IMAP errors as retryable and non retryable in a few places, but errors thrown in any of our imap operations were not being properly passed through our `convertImapErrors` :( This was broken, oh so broken Also loosen condition to detect System Errors Test Plan: manual Reviewers: spang, mark, evan Reviewed By: evan Differential Revision: https://phab.nylas.com/D4022 --- packages/isomorphic-core/src/imap-connection.es6 | 6 +++++- packages/isomorphic-core/src/imap-errors.js | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) 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