Modify done so that it doesn't use then(), thus not creating an extra, unnecessary promise. Add Promise.prototype._fatal as a way to handle fatal errors that escape done()