docs: function empower (assert, formatter, options) {
      var config = assign(defaultOptions(), options);
      var eagerEvaluation = !(config.modifyMessageOnRethrow || config.saveContextOnRethrow);
      // see: https://github.com/power-assert-js/empower/pull/26
      var shouldRecreateAssertionError = (function isStackUnchanged () {
          if (typeof assert !== 'function') {
              return false;
          }
          if (typeof assert.AssertionError !== 'function') {
              return false;
          }
          var ae = new assert.AssertionError({
              actual: 123,
              expected: 456,
              operator: '==='
          });
          ae.message = '[REPLACED MESSAGE]';
          return !(/REPLACED MESSAGE/.test(ae.stack)) && /123 === 456/.test(ae.stack);
      })();
  
      var empowerCoreConfig = assign(config, {
          modifyMessageBeforeAssert: function (beforeAssertEvent) {
              var message = beforeAssertEvent.originalMessage;
              if (!eagerEvaluation) {
                  return message;
              }
              return buildPowerAssertText(formatter, message, beforeAssertEvent.powerAssertContext);
          },
          onError: function onError (errorEvent) {
              var e = errorEvent.error;
              if (!/^AssertionError/.test(e.name)) {
                  throw e;
              }
              if (!errorEvent.powerAssertContext) {
                  throw e;
              }
              var poweredMessage;
              if (config.modifyMessageOnRethrow || config.saveContextOnRethrow) {
                  poweredMessage = buildPowerAssertText(formatter, errorEvent.originalMessage, errorEvent.powerAssertContext);
                  if (shouldRecreateAssertionError) {
                      e = new assert.AssertionError({
                          message: poweredMessage,
                          actual: e.actual,
                          expected: e.expected,
                          operator: e.operator,
                          stackStartFunction: e.stackStartFunction || onError
                      });
                      e.generatedMessage = false;
                  }
              }
              if (config.modifyMessageOnRethrow && !shouldRecreateAssertionError) {
                  e.message = poweredMessage;
                  e.generatedMessage = false;
              }
              if (config.saveContextOnRethrow) {
                  e.powerAssertContext = errorEvent.powerAssertContext;
              }
              throw e;
          }
      });
      var enhancedAssert = empowerCore(assert, empowerCoreConfig);
      define(enhancedAssert, capturable());
      return enhancedAssert;
  }