diff --git a/package.json b/package.json
index 8bd48b4d97c6c5b7dfbe2b8e92e0d76dfbb24abd..acba66a2af8082d586dcaf0e8172831972a1ba42 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,7 @@
     "apicache": "*",
     "asyncawait": "^0.7.4",
     "bluebird": "^2.9.34",
+    "connect-timeout": "*",
     "debug": "^2.2.0",
     "express": "^4.13.3",
     "morgan": "^1.6.1",
diff --git a/server.js b/server.js
index 8f9826aa6e4c70a039734bdc297cff7701cf2567..f3bf379ade6bb45745f1f7bbac1a0cd75274f091 100755
--- a/server.js
+++ b/server.js
@@ -11,6 +11,7 @@ var await     = require( 'asyncawait/await' );
 var async     = require( 'asyncawait/async' );
 var apicache  = require( 'apicache' ).options( { defaultDuration: 15000 } );
 var cache     = apicache.middleware;
+var timeout   = require( 'connect-timeout' );
 var request   = require( 'request' );
 
 /**
@@ -26,6 +27,8 @@ var port    = serverConfig.port || 3000;
 
 var app = express();
 app.use( morgan( DEBUG ? 'dev' : 'combined' ) );
+app.use( timeout( '10s' ) );
+app.use( haltOnTimeout );
 
 // Parse lock configurations
 Object.keys( config ).forEach( function( lockName ) {
@@ -84,6 +87,13 @@ function statusStringtoInt( status ) {
     return statusInt;
 }
 
+// Timeout callback
+function haltOnTimeout( req, res, next ) {
+    if ( ! req.timedout ) {
+        next();
+    }
+}
+
 /**
  * ROUTES
  */