docs: function PromiseImpl(executor) {
  
      /* Proper construction */
      if (!(this instanceof PromiseImpl)) return new PromiseImpl(executor);
  
      /* Sanity checks */
      if (!(typeof(executor) == 'function')) {
        throw new TypeError("Executor is not a function");
      }
  
      /* Internal deferred */
      var deferred = new Deferred();
  
      Object.defineProperties(this, {
  
        /**
         * Appends fulfillment and rejection handlers to this {@link Promise}, and
         * returns a **new** promise resolving to the return value of the called
         * handler.
         *
         * @param {function} [onSuccess] - The handler to call when this
         *        {@link Promise} has been successfully resolved.
         * @param {function} [onFailure] - The handler to call when this
         *        {@link Promise} has been rejected.
         * @returns {Promise} A new {@link Promise} resolving to the return value
         *          of the called handler
         * @function module:$promise.Promise#then
         */
        'then': { enumerable: true, configurable: false, value: function() {
          return deferred.promise.then.apply(deferred.promise, arguments);
        }}
      });
  
      /* Execute our promise */
      try {
        executor(deferred.resolve, deferred.reject);
      } catch (error) {
        deferred.reject(error);
      }
    }