code: function Server( options , requestHandler ) {
  	if ( ! options || typeof options !== 'object' ) { options = { http: true , port: 80 } ; }
  
  	this.port = options.port || 80 ;
  	this.requestHandler = requestHandler ;
  	this.uncaughtError = 0 ;
  	this.catchErrors = !! options.catchErrors ;
  	this.http = !! options.http ;
  	this.ws = !! options.ws ;
  	this.multipart = !! options.multipart ;
  	this.httpServer = null ;
  	this.wsServer = null ;
  
  	if ( this.catchErrors ) {
  		this.domain = domain.create() ;
  		this.domain.on( 'error' , this.errorHandler.bind( this ) ) ;
  		this.domain.run( this.startServer.bind( this ) ) ;
  	}
  	else {
  		this.startServer() ;
  	}
  
  	this.defineStates( 'running' , 'closing' , 'close' ) ;
  }
docs: /*
  new Server( options , requestHandler )
  options: object of options, where:
  port: the port where the server is listening, default to 80
  http: `boolean` spawn an http server
  ws: `boolean` spawn an websocket server
  catchErrors: `boolean` (default: false) catch uncaught userland errors (using try-catch and domain)
  
  Spawn a new server