Better constructor behavior

constructor now treats statusCode as optional and defaults it to 400
constructor will call itself if not called using the new keyword