Produto cartesiano de múltiplos arrays em JavaScript

Como você implementaria o produto cartesiano de múltiplos arrays em JavaScript?

Como um exemplo,

cartesian([1,2],[10,20],[100,200,300]) //should be
// [[1,10,100],[1,10,200],[1,10,300],[2,10,100],[2,10,200]...]

questionAnswers(22)

yourAnswerToTheQuestion