lib/perform.js
function() {
  this.dones = [];
  this.doneArgs = [];
  this.fails = [];
  this.failArgs = [];
  this.pendings = [];
  this.pendingArgs = [];
  this.state = 'pending';

  // expose the promise
  this.promise = iPromise.call( this );

}
function() {
  this.dones = [];
  this.doneArgs = [];
  this.fails = [];
  this.failArgs = [];
  this.pendings = [];
  this.pendingArgs = [];
  this.state = 'pending';

  // expose the promise
  this.promise = iPromise.call( this );

}
the heart of the beast