Add missing `catch` blocks for Promises in JS

Since we moved to Webpack (see meta issue gitlab-ce#27486), 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-ce!9969 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-ce!9991 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-ce!9991 is updated and merged.

Edited Jul 21, 2020 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading