diff --git a/rules/no-unnecessary-await.js b/rules/no-unnecessary-await.js index 1fda0e903c..e150f7fb50 100644 --- a/rules/no-unnecessary-await.js +++ b/rules/no-unnecessary-await.js @@ -38,7 +38,11 @@ function notPromise(node) { /** @param {import('eslint').Rule.RuleContext} context */ const create = context => ({ AwaitExpression(node) { - if (!notPromise(node.argument)) { + if ( + // F#-style pipeline operator, `Promise.resolve() |> await` + !node.argument + || !notPromise(node.argument) + ) { return; } diff --git a/test/no-unnecessary-await.js b/test/no-unnecessary-await.js index 49ffc3d7fb..1dec6ac7df 100644 --- a/test/no-unnecessary-await.js +++ b/test/no-unnecessary-await.js @@ -113,3 +113,33 @@ test.snapshot({ 'async function foo() {+await -1}', ], }); + +test.babel({ + valid: [ + { + code: 'Promise.resolve() |> await', + languageOptions: { + parserOptions: { + babelOptions: { + parserOpts: { + plugins: [['pipelineOperator', {proposal: 'fsharp'}]], + }, + }, + }, + }, + }, + { + code: 'Promise.resolve() |> await %', + languageOptions: { + parserOptions: { + babelOptions: { + parserOpts: { + plugins: [['pipelineOperator', {proposal: 'hack', topicToken: '%'}]], + }, + }, + }, + }, + }, + ], + invalid: [], +});