docs: function Zousan(func)
  		{
  			//  this.state = STATE_PENDING;	// Inital state (PENDING is undefined, so no need to actually have this assignment)
  			//this.c = [];			// clients added while pending.   <Since 1.0.2 this is lazy instantiation>
  
  			// If Zousan is called without "new", throw an error
  			if (!(this instanceof Zousan)) throw new TypeError("Zousan must be created with the new keyword");
  
  			// If a function was specified, call it back with the resolve/reject functions bound to this context
  			if(typeof func === "function")
  			{
  				var me = this;
  				try
  				{
  					func(
  						function(arg) { me.resolve(arg) },	// the resolve function bound to this context.
  						function(arg) { me.reject(arg) })	// the reject function bound to this context
  				}
  				catch(e)
  				{
  					me.reject(e);
  				}
  			}
  			else if(arguments.length > 0) // If an argument was specified and it is NOT a function, throw an error
  			{
  				throw new TypeError("Zousan resolver " + func + " is not a function");
  			}
  		}