diff --git a/lib/_http_server.js b/lib/_http_server.js
index bd726f83e3e638..fe563977a635e3 100644
--- a/lib/_http_server.js
+++ b/lib/_http_server.js
@@ -162,6 +162,9 @@ ServerResponse.prototype._implicitHeader = function _implicitHeader() {
 ServerResponse.prototype.writeHead = writeHead;
 function writeHead(statusCode, reason, obj) {
   var headers;
+  statusCode |= 0;
+  if (statusCode < 100 || statusCode > 999)
+    throw new RangeError(`Invalid status code: ${statusCode}`);
 
   if (typeof reason === 'string') {
     // writeHead(statusCode, reasonPhrase[, headers])
@@ -190,17 +193,13 @@ function writeHead(statusCode, reason, obj) {
     headers = obj;
   }
 
-  statusCode |= 0;
-  if (statusCode < 100 || statusCode > 999)
-    throw new RangeError(`Invalid status code: ${statusCode}`);
-
   if (common._checkInvalidHeaderChar(this.statusMessage))
     throw new Error('Invalid character in statusMessage.');
 
   var statusLine = 'HTTP/1.1 ' + statusCode + ' ' + this.statusMessage + CRLF;
 
   if (statusCode === 204 || statusCode === 304 ||
-      (100 <= statusCode && statusCode <= 199)) {
+      (statusCode >= 100 && statusCode <= 199)) {
     // RFC 2616, 10.2.5:
     // The 204 response MUST NOT include a message-body, and thus is always
     // terminated by the first empty line after the header fields.