12345678910111213141516171819202122232425262728293031323334353637383940 |
- /**
- * Rule: no-promise-in-callback
- * Discourage using promises inside of callbacks.
- */
- 'use strict'
- const getDocsUrl = require('./lib/get-docs-url')
- const isPromise = require('./lib/is-promise')
- const isInsideCallback = require('./lib/is-inside-callback')
- module.exports = {
- meta: {
- type: 'suggestion',
- docs: {
- url: getDocsUrl('no-promise-in-callback'),
- },
- },
- create(context) {
- return {
- CallExpression(node) {
- if (!isPromise(node)) return
- // if i'm returning the promise, it's probably not really a callback
- // function, and I should be okay....
- if (node.parent.type === 'ReturnStatement') return
- // what about if the parent is an ArrowFunctionExpression
- // would that imply an implicit return?
- if (context.getAncestors().some(isInsideCallback)) {
- context.report({
- node: node.callee,
- message: 'Avoid using promises inside of callbacks.',
- })
- }
- },
- }
- },
- }
|