From 6d19dd3013480aa0ed7a025ee179fc499c255fca Mon Sep 17 00:00:00 2001 From: Graeme Yeates Date: Mon, 17 Apr 2017 14:07:58 -0400 Subject: [PATCH] Avoid eval in async wrappers; fixes #1403 --- lib/internal/wrapAsync.js | 16 ++-------------- mocha_test/asyncFunctions.js | 13 ++++++++++++- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/lib/internal/wrapAsync.js b/lib/internal/wrapAsync.js index aee027504..c4d1ea830 100644 --- a/lib/internal/wrapAsync.js +++ b/lib/internal/wrapAsync.js @@ -1,19 +1,7 @@ -import identity from 'lodash/identity'; import asyncify from '../asyncify'; var supportsSymbol = typeof Symbol === 'function'; -function supportsAsync() { - var supported; - try { - /* eslint no-eval: 0 */ - supported = isAsync(eval('(async function () {})')); - } catch (e) { - supported = false; - } - return supported; -} - function isAsync(fn) { return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction'; } @@ -22,6 +10,6 @@ function wrapAsync(asyncFn) { return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn; } -export default supportsAsync() ? wrapAsync : identity; +export default wrapAsync; -export { supportsAsync, isAsync }; +export { isAsync }; diff --git a/mocha_test/asyncFunctions.js b/mocha_test/asyncFunctions.js index b756a902f..3b759e1c8 100644 --- a/mocha_test/asyncFunctions.js +++ b/mocha_test/asyncFunctions.js @@ -1,4 +1,15 @@ -var supportsAsync = require('../lib/internal/wrapAsync').supportsAsync; +var isAsync = require('../lib/internal/wrapAsync').isAsync; + +function supportsAsync() { + var supported; + try { + /* eslint no-eval: 0 */ + supported = isAsync(eval('(async function () {})')); + } catch (e) { + supported = false; + } + return supported; +} describe('async function support', function () { this.timeout(100);