noThenProperty
Summary
Section titled Summary- Rule available since:
v1.5.0
- Diagnostic Category:
lint/suspicious/noThenProperty
- This rule is recommended, which means is enabled by default.
- This rule doesn’t have a fix.
- The default severity of this rule is error.
- Sources:
- Same as
unicorn/no-thenable
- Same as
Description
Section titled DescriptionDisallow then
property.
When combining objects with a then
method (thenable objects) with await expressions or dynamic imports, caution is necessary.
These syntaxes interpret the object’s then method as intended for the resolution or rejection of a promise, which can lead to unexpected behavior or errors.
Examples
Section titled ExamplesInvalid
Section titled Invalidexport {then};
code-block.js:1:9 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not export then.
> 1 │ export {then};
│ ^^^^
2 │
const foo = { then() {}};
code-block.js:2:5 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not add then to an object.
1 │ const foo = {
> 2 │ then() {}
│ ^^^^
3 │ };
4 │
const foo = { get then() {}};
code-block.js:2:9 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not add then to an object.
1 │ const foo = {
> 2 │ get then() {}
│ ^^^^
3 │ };
4 │
const foo = { get then() {}};
code-block.js:2:8 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not add then to an object.
1 │ const foo = {
> 2 │ get then() {}
│ ^^^^
3 │ };
4 │
foo.then = function () {}
code-block.js:1:1 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not add then to an object.
> 1 │ foo.then = function () {}
│ ^^^^^^^^
2 │
class Foo { then() {}}
code-block.js:2:5 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not add then to a class.
1 │ class Foo {
> 2 │ then() {}
│ ^^^^
3 │ }
4 │
class Foo { static then() {}}
code-block.js:2:12 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not add then to a class.
1 │ class Foo {
> 2 │ static then() {}
│ ^^^^
3 │ }
4 │
Valid
Section titled Validexport {then as success};
const foo = { success() {}};
class Foo { success() {}}
const foo = bar.then;
How to configure
Section titled How to configure{ "linter": { "rules": { "suspicious": { "noThenProperty": "error" } } }}