catch annoyingly throw an error on really old browsers, can you just switch this to `.then(null, func)`? (they are equivalent)