Bug 1098168 - BaseIcon

#### Use of Promise that could hide JS error

Through out the patch I see `fn().then(function() { ... });` without a `.catch()` block. This is very dangerous. Promise has error handling built-in (or, built-in `try { ... } catch (e) { .. }`) and you can't opt-out from it. Therefore, without a `.catch()` block at the end, the error throw from `fn()` or the then callback will not be caught nor print anything.

Please fix all promise usage in this patch to at least include a `.catch(function(e) { console.error(e || 'should not reject'); })` in every promise chain.