diff --git a/lib/readline.js b/lib/readline.js index bea005c853c46fc..5166dddfa1565d9 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -59,6 +59,7 @@ const { StringPrototypeStartsWith, StringPrototypeTrim, Promise, + PromiseReject, Symbol, SymbolAsyncIterator, SafeStringIterator, @@ -400,11 +401,11 @@ Interface.prototype.question = function(query, options, cb) { Interface.prototype.question[promisify.custom] = function(query, options) { options = typeof options === 'object' && options !== null ? options : {}; - return new Promise((resolve, reject) => { - if (options.signal?.aborted) { - throw new AbortError(); - } + if (options.signal && options.signal.aborted) { + return PromiseReject(new AbortError()); + } + return new Promise((resolve, reject) => { this.question(query, options, resolve); if (options.signal) { options.signal.addEventListener('abort', () => {