You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Of the two that I looked closer at it seems to be that the final .then() has been a .then(func1, func2), which do enable an exception in func1 to be silently caught and thus is a correctly caught error.
/Users/pelle/Sites/smallrepos/standard/tmp/fs-extra/lib/copy/copy.js:51:3: Expected catch() or return (promise/catch-or-return)
not ok 11 fs-extra (https://github.com/jprichardson/node-fs-extra)
/Users/pelle/Sites/smallrepos/standard/tmp/karma-browserstack-launcher/index.js:203:5: Expected catch() or return (promise/catch-or-return)
not ok 26 karma-browserstack-launcher (https://github.com/karma-runner/karma-browserstack-launcher)
/Users/pelle/Sites/smallrepos/standard/tmp/parse-torrent/bin/cmd.js:25:39: Expected catch() or return (promise/catch-or-return)
not ok 34 parse-torrent (https://github.com/webtorrent/parse-torrent)
/Users/pelle/Sites/smallrepos/standard/tmp/simple-peer/index.js:583:5: Expected catch() or return (promise/catch-or-return)
not ok 42 simple-peer (https://github.com/feross/simple-peer)
/Users/pelle/Sites/smallrepos/standard/tmp/write-file-atomic/index.js:44:3: Expected catch() or return (promise/catch-or-return)
not ok 44 write-file-atomic (https://github.com/iarna/write-file-atomic)
/Users/pelle/Sites/smallrepos/standard/tmp/napa/lib/pkg.js:112:7: Expected catch() or return (promise/catch-or-return)
not ok 53 napa (https://github.com/shama/napa)
/Users/pelle/Sites/smallrepos/standard/tmp/glob-promise/test/index.js:20:3: Expected catch() or return (promise/catch-or-return)
not ok 66 glob-promise (https://github.com/ahmadnassri/glob-promise)
/Users/pelle/Sites/smallrepos/standard/tmp/standard-engine/bin/cmd.js:95:5: Expected catch() or return (promise/catch-or-return)
not ok 73 standard-engine (https://github.com/flet/standard-engine)
/Users/pelle/Sites/smallrepos/standard/tmp/jsreport-express/lib/odata.js:62:7: Expected catch() or return (promise/catch-or-return)
not ok 74 jsreport-express (https://github.com/jsreport/jsreport-express)
/Users/pelle/Sites/smallrepos/standard/tmp/har-validator/test/promise.js:23:3: Expected catch() or return (promise/catch-or-return)
not ok 92 har-validator (https://github.com/ahmadnassri/har-validator)
/Users/pelle/Sites/smallrepos/standard/tmp/thunk-redis/test/commands/client.js:53:5: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/thunk-redis/test/commands/client.js:64:5: Expected catch() or return (promise/catch-or-return)
not ok 117 thunk-redis (https://github.com/thunks/thunk-redis)
/Users/pelle/Sites/smallrepos/standard/tmp/read-closest-package/index.js:28:5: Expected catch() or return (promise/catch-or-return)
not ok 139 read-closest-package (https://github.com/mattdesl/read-closest-package)
/Users/pelle/Sites/smallrepos/standard/tmp/fs-writefile-promise/test/index.js:17:3: Expected catch() or return (promise/catch-or-return)
not ok 151 fs-writefile-promise (https://github.com/ahmadnassri/fs-writefile-promise)
/Users/pelle/Sites/smallrepos/standard/tmp/ban-sensitive-files/bin/ban.js:40:1: Expected catch() or return (promise/catch-or-return)
not ok 162 ban-sensitive-files (https://github.com/bahmutov/ban-sensitive-files)
/Users/pelle/Sites/smallrepos/standard/tmp/socket.io-rpc-client/sample/node_client.js:6:1: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/socket.io-rpc-client/sample/node_client.js:8:5: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/socket.io-rpc-client/sample/node_client.js:11:5: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/socket.io-rpc-client/test/socket.io-rpc-client.spec.js:22:11: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/socket.io-rpc-client/test/socket.io-rpc-client.spec.js:103:7: Expected catch() or return (promise/catch-or-return)
not ok 200 socket.io-rpc-client (https://github.com/capaj/socket.io-rpc-client)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:16:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:19:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:26:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:29:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:36:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:39:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:47:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:52:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:56:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:65:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:70:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:75:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:79:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:87:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:92:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:96:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:105:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:110:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:115:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:119:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:126:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:131:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:136:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:140:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:149:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:154:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:160:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:164:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:172:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:175:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:180:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:183:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:188:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:191:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:196:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:199:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:203:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:211:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:214:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:219:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:222:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:227:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:230:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:235:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:238:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:243:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:246:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:251:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:254:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:259:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:262:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:267:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:270:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:274:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:282:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:287:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:292:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:295:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:300:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:305:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:310:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:313:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:317:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:324:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:327:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:330:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:333:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:336:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:339:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:342:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:347:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:350:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/addressbar/tests/index.js:354:3: Expected catch() or return (promise/catch-or-return)
not ok 208 addressbar (https://github.com/cerebral/addressbar)
/Users/pelle/Sites/smallrepos/standard/tmp/tape-promise/index.babel.js:33:27: Expected catch() or return (promise/catch-or-return)
not ok 255 tape-promise (https://github.com/jprichardson/tape-promise)
/Users/pelle/Sites/smallrepos/standard/tmp/instant.io/client/index.js:259:11: Expected catch() or return (promise/catch-or-return)
not ok 266 instant.io (https://github.com/webtorrent/instant.io)
/Users/pelle/Sites/smallrepos/standard/tmp/webtorrent-desktop/test/index.js:10:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/webtorrent-desktop/test/test-add-torrent.js:11:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/webtorrent-desktop/test/test-add-torrent.js:62:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/webtorrent-desktop/test/test-audio.js:9:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/webtorrent-desktop/test/test-torrent-list.js:13:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/webtorrent-desktop/test/test-torrent-list.js:32:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/webtorrent-desktop/test/test-torrent-list.js:62:3: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/webtorrent-desktop/test/test-video.js:9:3: Expected catch() or return (promise/catch-or-return)
not ok 268 webtorrent-desktop (https://github.com/webtorrent/webtorrent-desktop)
/Users/pelle/Sites/smallrepos/standard/tmp/studynotes/liveupdater/index.js:268:5: Expected catch() or return (promise/catch-or-return)
/Users/pelle/Sites/smallrepos/standard/tmp/studynotes/tools/transform-css.js:13:1: Expected catch() or return (promise/catch-or-return)
not ok 270 studynotes (https://github.com/feross/studynotes)
I'm definitely down to try enabling this with { allowThen: true, allowFinally: true } since it still seems super useful with those options to catch cases where no attempt at error handling was made.
Regarding the allowThen option, can someone summarize the problem with using .then(success, fail) instead of .then(success).catch(fail)?
Regarding the allowThen option, can someone summarize the problem with using .then(success, fail) instead of .then(success).catch(fail)?
If the functions success throws, the thrown error will be eaten and result in the promise returned from then being rejected. If you don't do anything with that Promise (e.g. not returning it or .catching it) that error will go unreported ☺️
@voxpelli Can you propose a configuration for the rule? As well as testing ecosystem breakage with that setting?
// clone repo
npm install
// edit the eslint.json file, adding a "rules" section with your proposed rule
npm test
Report the final test output, number of tests passed/failed. You can also share representative examples of failures that you agree with and ones that are not ideal.
Activity
LinusU commentedon Aug 27, 2018
I think this sounds very good, we should run a test and see how many packages it would break 👍
voxpelli commentedon Aug 27, 2018
@LinusU: Agree, that would be nice. How does one run such a test? Someone who has a setup for that?
LinusU commentedon Aug 27, 2018
We should really write this down somewhere 😅
eslintrc.jsonand add the rulenpm itvoxpelli commentedon Aug 27, 2018
Result:
Most with a single or two failing lines.
Of the two that I looked closer at it seems to be that the final
.then()has been a.then(func1, func2), which do enable an exception infunc1to be silently caught and thus is a correctly caught error.Two examples:
LinusU commentedon Aug 27, 2018
Could you post the entire list of failing repos, then we can start sending PRs 😄
voxpelli commentedon Aug 27, 2018
Here's all the errors:
Details
LinusU commentedon Aug 27, 2018
Thank you! Cleaned it up a bit here:
Details
fs-extra
fs-extra/lib/copy/copy.js:51:3: Expected catch() or return (promise/catch-or-return)karma-browserstack-launcher
karma-browserstack-launcher/index.js:203:5: Expected catch() or return (promise/catch-or-return)parse-torrent
parse-torrent/bin/cmd.js:25:39: Expected catch() or return (promise/catch-or-return)simple-peer
simple-peer/index.js:583:5: Expected catch() or return (promise/catch-or-return)write-file-atomic
write-file-atomic/index.js:44:3: Expected catch() or return (promise/catch-or-return)napa
napa/lib/pkg.js:112:7: Expected catch() or return (promise/catch-or-return)glob-promise
glob-promise/test/index.js:20:3: Expected catch() or return (promise/catch-or-return)standard-engine
standard-engine/bin/cmd.js:95:5: Expected catch() or return (promise/catch-or-return)jsreport-express
jsreport-express/lib/odata.js:62:7: Expected catch() or return (promise/catch-or-return)har-validator
har-validator/test/promise.js:23:3: Expected catch() or return (promise/catch-or-return)thunk-redis
thunk-redis/test/commands/client.js:53:5: Expected catch() or return (promise/catch-or-return)thunk-redis/test/commands/client.js:64:5: Expected catch() or return (promise/catch-or-return)read-closest-package
read-closest-package/index.js:28:5: Expected catch() or return (promise/catch-or-return)fs-writefile-promise
fs-writefile-promise/test/index.js:17:3: Expected catch() or return (promise/catch-or-return)ban-sensitive-files
ban-sensitive-files/bin/ban.js:40:1: Expected catch() or return (promise/catch-or-return)socket.io-rpc-client
socket.io-rpc-client/sample/node_client.js:6:1: Expected catch() or return (promise/catch-or-return)socket.io-rpc-client/sample/node_client.js:8:5: Expected catch() or return (promise/catch-or-return)socket.io-rpc-client/sample/node_client.js:11:5: Expected catch() or return (promise/catch-or-return)socket.io-rpc-client/test/socket.io-rpc-client.spec.js:22:11: Expected catch() or return (promise/catch-or-return)socket.io-rpc-client/test/socket.io-rpc-client.spec.js:103:7: Expected catch() or return (promise/catch-or-return)addressbar
addressbar/tests/index.js:16:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:19:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:26:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:29:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:36:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:39:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:47:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:52:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:56:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:65:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:70:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:75:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:79:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:87:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:92:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:96:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:105:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:110:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:115:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:119:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:126:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:131:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:136:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:140:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:149:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:154:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:160:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:164:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:172:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:175:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:180:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:183:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:188:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:191:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:196:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:199:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:203:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:211:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:214:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:219:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:222:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:227:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:230:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:235:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:238:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:243:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:246:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:251:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:254:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:259:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:262:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:267:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:270:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:274:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:282:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:287:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:292:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:295:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:300:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:305:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:310:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:313:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:317:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:324:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:327:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:330:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:333:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:336:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:339:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:342:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:347:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:350:3: Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:354:3: Expected catch() or return (promise/catch-or-return)tape-promise
tape-promise/index.babel.js:33:27: Expected catch() or return (promise/catch-or-return)instant.io
instant.io/client/index.js:259:11: Expected catch() or return (promise/catch-or-return)webtorrent-desktop
webtorrent-desktop/test/index.js:10:3: Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-add-torrent.js:11:3: Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-add-torrent.js:62:3: Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-audio.js:9:3: Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-torrent-list.js:13:3: Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-torrent-list.js:32:3: Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-torrent-list.js:62:3: Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-video.js:9:3: Expected catch() or return (promise/catch-or-return)studynotes
studynotes/liveupdater/index.js:268:5: Expected catch() or return (promise/catch-or-return)studynotes/tools/transform-css.js:13:1: Expected catch() or return (promise/catch-or-return)Catch errors thrown by onInclude
Catch errors thrown by client.createWorker
Catch errors from stdin.buffer()
rstacruz commentedon Aug 28, 2018
This seems like something that belongs in CONTRIBUTING.md :)
voxpelli commentedon Jul 6, 2019
@feross @LinusU How do I/we push this forward?
voxpelli commentedon Jul 6, 2019
Here's an up to date run
11 failing projects, 6.7% of total
simple-peer/index.js:693:5:Expected catch() or return (promise/catch-or-return)standard-engine/bin/cmd.js:95:5:Expected catch() or return (promise/catch-or-return)har-validator/test/promise.js:23:3:Expected catch() or return (promise/catch-or-return)read-closest-package/index.js:28:5:Expected catch() or return (promise/catch-or-return)fs-writefile-promise/test/index.js:17:3:Expected catch() or return (promise/catch-or-return)ban-sensitive-files/bin/ban.js:40:1:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:16:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:19:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:26:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:29:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:36:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:39:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:47:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:52:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:56:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:65:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:70:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:75:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:79:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:87:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:92:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:96:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:105:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:110:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:115:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:119:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:126:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:131:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:136:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:140:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:149:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:154:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:160:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:164:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:172:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:175:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:180:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:183:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:188:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:191:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:196:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:199:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:203:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:211:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:214:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:219:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:222:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:227:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:230:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:235:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:238:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:243:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:246:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:251:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:254:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:259:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:262:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:267:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:270:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:274:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:282:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:287:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:292:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:295:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:300:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:305:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:310:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:313:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:317:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:324:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:327:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:330:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:333:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:336:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:339:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:342:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:347:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:350:3:Expected catch() or return (promise/catch-or-return)addressbar/tests/index.js:354:3:Expected catch() or return (promise/catch-or-return)tape-promise/index.babel.js:68:36:Expected catch() or return (promise/catch-or-return)tape-promise/tests/async.test.js:15:3:Expected catch() or return (promise/catch-or-return)tape-promise/tests/async.test.js:18:7:Expected catch() or return (promise/catch-or-return)instant.io/client/index.js:259:11:Expected catch() or return (promise/catch-or-return)studynotes/liveupdater/index.js:268:5:Expected catch() or return (promise/catch-or-return)studynotes/tools/transform-css.js:13:1:Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/index.js:10:3:Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-add-torrent.js:11:3:Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-add-torrent.js:62:3:Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-audio.js:9:3:Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-torrent-list.js:13:3:Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-torrent-list.js:32:3:Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-torrent-list.js:62:3:Expected catch() or return (promise/catch-or-return)webtorrent-desktop/test/test-video.js:9:3:Expected catch() or return (promise/catch-or-return)Add catch-or-return
feross commentedon Jul 10, 2019
@voxpelli Can you make a comment here (#1321) to propose this for inclusion in
standard14? Thanks!1 remaining item
feross commentedon Jul 11, 2019
I'm definitely down to try enabling this with
{ allowThen: true, allowFinally: true }since it still seems super useful with those options to catch cases where no attempt at error handling was made.Regarding the
allowThenoption, can someone summarize the problem with using.then(success, fail)instead of.then(success).catch(fail)?LinusU commentedon Jul 11, 2019
If the functions☺️
successthrows, the thrown error will be eaten and result in the promise returned fromthenbeing rejected. If you don't do anything with thatPromise(e.g. not returning it or.catching it) that error will go unreportedvoxpelli commentedon Oct 29, 2020
Starting with Node 15 which was just released, unhandled rejections will start throwing, so probably even more reason to add this.
I'm at your disposal to get this added @feross 👍
feross commentedon Oct 29, 2020
@voxpelli Can you propose a configuration for the rule? As well as testing ecosystem breakage with that setting?
Report the final test output, number of tests passed/failed. You can also share representative examples of failures that you agree with and ones that are not ideal.
Thanks for offering to help!
feross commentedon Nov 10, 2020
@voxpelli I just noticed your comment here: standard/eslint-config-standard#148 (comment) Is your latest opinion that this shouldn't be merged as-is because of the false positives?