diff --git a/packages/eslint-plugin/src/rules/unbound-method.ts b/packages/eslint-plugin/src/rules/unbound-method.ts index 46bbe779c66..b5e8e0cc65b 100644 --- a/packages/eslint-plugin/src/rules/unbound-method.ts +++ b/packages/eslint-plugin/src/rules/unbound-method.ts @@ -109,6 +109,9 @@ function isSafeUse(node: TSESTree.Node): boolean { return true; case AST_NODE_TYPES.CallExpression: + if (node.type === AST_NODE_TYPES.MemberExpression) { + return true; + } return parent.callee === node; case AST_NODE_TYPES.ConditionalExpression: diff --git a/packages/eslint-plugin/tests/rules/unbound-method.test.ts b/packages/eslint-plugin/tests/rules/unbound-method.test.ts index 520b28fc1d1..59513643c00 100644 --- a/packages/eslint-plugin/tests/rules/unbound-method.test.ts +++ b/packages/eslint-plugin/tests/rules/unbound-method.test.ts @@ -15,6 +15,9 @@ const ruleTester = new RuleTester({ ruleTester.run('unbound-method', rule, { valid: [ ` +new Promise(() => {}).then(console.log) + `, + ` class ContainsMethods { bound?: () => void; unbound?(): void;