lib/httpLog.js
function HttpLog ()
{
	var args = arguer.apply(_constructorFormat, arguments);
	if (args instanceof Error)
		return httpLog(args);

	if (args.response instanceof Http.IncomingMessage && args.response.statusCode)
		return httpLog(args.response.statusCode, Http.STATUS_CODES[args.response.statusCode]);

	if (args.error instanceof HttpLog)
		return args.error;
	
	var log;
	
	if (args.error)
	{
		log = args.error;
	}
	else if (args.message !== undefined || (args.status !== undefined && args.data !== null) || args.data)
	{
		log = new Error(args.message);
	}
	else
	{
		return HttpLog.none;
	}
	
	log.__proto__ = HttpLog.prototype;
	if (args.status !== undefined)
		log.status = args.status;
	
	log.data = args.data || {};
	
	return log;
}
function HttpLog ()
{
	var args = arguer.apply(_constructorFormat, arguments);
	if (args instanceof Error)
		return httpLog(args);

	if (args.response instanceof Http.IncomingMessage && args.response.statusCode)
		return httpLog(args.response.statusCode, Http.STATUS_CODES[args.response.statusCode]);

	if (args.error instanceof HttpLog)
		return args.error;
	
	var log;
	
	if (args.error)
	{
		log = args.error;
	}
	else if (args.message !== undefined || (args.status !== undefined && args.data !== null) || args.data)
	{
		log = new Error(args.message);
	}
	else
	{
		return HttpLog.none;
	}
	
	log.__proto__ = HttpLog.prototype;
	if (args.status !== undefined)
		log.status = args.status;
	
	log.data = args.data || {};
	
	return log;
}
this is just to make JSHint stop complaining about casing