lib/assert.js
function FunctionCall( fn , isAsync , thisArg , ... args ) {
	this.function = fn ;
	this.isAsync = isAsync ;
	this.this = thisArg ;
	this.args = args ;
	this.hasThrown = false ;
	this.error = undefined ;
	this.return = undefined ;

	try {
		this.return = this.function.call( this.this || null , ... this.args ) ;
	}
	catch ( error ) {
		this.hasThrown = true ;
		this.error = error ;
	}

	if ( this.isAsync ) {
		if ( this.hasThrown ) {
			this.promise = Promise.resolve() ;
		}
		else {
			this.promise = Promise.resolve( this.return )
				.then(
					value => this.return = value ,
					error => {
						this.hasThrown = true ;
						this.error = error ;
					}
				) ;
		}
	}
}
function FunctionCall( fn , isAsync , thisArg , ... args ) {
	this.function = fn ;
	this.isAsync = isAsync ;
	this.this = thisArg ;
	this.args = args ;
	this.hasThrown = false ;
	this.error = undefined ;
	this.return = undefined ;

	try {
		this.return = this.function.call( this.this || null , ... this.args ) ;
	}
	catch ( error ) {
		this.hasThrown = true ;
		this.error = error ;
	}

	if ( this.isAsync ) {
		if ( this.hasThrown ) {
			this.promise = Promise.resolve() ;
		}
		else {
			this.promise = Promise.resolve( this.return )
				.then(
					value => this.return = value ,
					error => {
						this.hasThrown = true ;
						this.error = error ;
					}
				) ;
		}
	}
}
function FunctionCall ( fn , isAsync , thisArg , ... args ) { this . function = fn ; this . isAsync = isAsync ; this . this = thisArg ; this . args = args ; this . hasThrown = false ; this . error = undefined ; this . return = undefined ; try { this . return = this . function . call ( this . this || null , ... this . args ) ; } catch ( error ) { this . hasThrown = true ; this . error = error ; } if ( this . isAsync ) { if ( this . hasThrown ) { this . promise = Promise . resolve ( ) ; } else { this . promise = Promise . resolve ( this . return ) . then ( value => this . return = value , error => { this . hasThrown = true ; this . error = error ; } ) ; } } }
A class for actual function, arguments, return value and thrown error
A class for actual function arguments return value and thrown error