Add missing `catch` blocks for Promises in JS
Since we moved to Webpack (see meta issue gitlab-foss#27486 (moved)), all the JS files we write support ES6 and are by default transpiled using Babel. While we have ESLint present already, it doesn't support identifying poorly written Promises in ES6.
gitlab-foss!9969 (merged) add support for linting Promises and we're initially starting by enabling catch-or-return
rule of the linter which identifies missing .catch()
from all Promises.
At the time of writing this, there are 15 such offences that linter has identified as follows;
gitlab/app/assets/javascripts/awards_handler.js
228:5 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/boards/boards_bundle.js
76:7 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/boards/components/board_blank_state.js
39:9 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/boards/components/board_list.js
74:11 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/boards/components/modal/index.js
55:11 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/boards/components/new_list_dropdown.js
29:11 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/boards/models/list.js
148:5 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/boards/stores/boards_store.js
35:7 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/diff_notes/components/resolve_btn.js
78:9 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/diff_notes/services/resolve.js
37:7 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/due_date_select.js
119:5 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/labels_select.js
398:15 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/milestone_select.js
164:15 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/monitoring/prometheus_graph.js
44:5 error Expected catch() or return promise/catch-or-return
gitlab/app/assets/javascripts/users_select.js
57:13 error Expected catch() or return promise/catch-or-return
There's already an open MR gitlab-foss!9991 (merged) which adds .catch()
block for all such occurrences, but most of them are empty implementation. We need to handle failing Promises correctly. So this is just a meta issue that gets closed once gitlab-foss!9991 (merged) is updated and merged.