docs: function Promise(o){
  	var self = this;
  	
          // object mixin
          if(o && typeof o === 'object'){
              for(var k in Promise.prototype)
  		o[k] = Promise.prototype[k];
  	    o._promise = {_chain:[]};
  
  	    return o;
          }
  	
  	// create new instance
          if(!(this instanceof Promise))
              return new Promise(o);
  
  	this._promise = {_chain: []};
  
          // use resolver callback
          if(typeof o === 'function') {
  	    task(function(){
  		var res = self.resolve.bind(self),
  		    rej = self.reject.bind(self);
  		o(res,rej);
  	    });
          }
      }