Erros estendidos não têm rastreio de mensagem ou pilha

Ao executar esse trecho através do BabelJS:

class FooError extends Error {
  constructor(message) {
    super(message);
  }
}

let error = new FooError('foo');
console.log(error, error.message, error.stack);

isso gera

{}

o que não é o que eu espero. Corrida

error = new Error('foo');
console.log(error, error.message, error.stack);

produz

{} foo Error: foo
    at eval (eval at <anonymous> (https://babeljs.io/scripts/repl.js?t=2015-05-21T16:46:33+00:00:263:11), <anonymous>:24:9)
    at REPL.evaluate (https://babeljs.io/scripts/repl.js?t=2015-05-21T16:46:33+00:00:263:36)
    at REPL.compile (https://babeljs.io/scripts/repl.js?t=2015-05-21T16:46:33+00:00:210:12)
    at Array.onSourceChange (https://babeljs.io/scripts/repl.js?t=2015-05-21T16:46:33+00:00:288:12)
    at u (https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js:28:185)

que é exatamente o que eu gostaria do erro estendido.

Meu objetivo é estenderError em uma variedade de subclasses e usá-los em bluebirdcatch Coincidindo. Até agora, isso está falhando miseravelmente.

Por que a subclasse não está mostrando uma mensagem ou rastreamento de pilha?

Editar: usando a subclasse interna do Chrome (graças a @coder) funciona perfeitamente. Isso não é específico para Babel, necessariamente, como o exemplo a seguir (de@loganfsmyth no feed mais fofo de Babel) mostra:

// Works
new (function(){
  "use strict";
  return class E extends Error { }
}());
// Doesn't
new (function(){
  "use strict";
  function E(message){
    Error.call(this, message);
  };
  E.prototype = Object.create(Error);
  E.prototype.constructor = E;
  return E;
}());

questionAnswers(2)

yourAnswerToTheQuestion