diff --git a/app/lib/streams/bma.js b/app/lib/streams/bma.js
index 851671f6569e181d8d18639a92bcc33f8c45a226..9a30291d2defc0305102fdbe8e0ef9bf1c74787c 100644
--- a/app/lib/streams/bma.js
+++ b/app/lib/streams/bma.js
@@ -2,6 +2,7 @@ var http = require('http');
 var express = require('express');
 var async = require('async');
 var log4js = require('log4js');
+var co = require('co');
 var Q = require('q');
 var cors = require('express-cors');
 var es = require('event-stream');
@@ -122,49 +123,55 @@ module.exports = function(server, interfaces, httpLogs) {
 
   var httpServers = [];
 
-  return interfaces.reduce(function(promise, netInterface) {
-    return promise.then(function() {
-      return listenInterface(app, netInterface.ip, netInterface.port)
-        .then(function(httpServer){
-          listenWebSocket(server, httpServer);
-          httpServers.push(httpServer);
-          logger.info('uCoin server listening on ' + netInterface.ip + ' port ' + netInterface.port);
-        });
-    });
-  }, Q.resolve())
-
-    .then(function(){
-      return {
-
-        closeConnections: function () {
-          return Q.all(httpServers.map(function (httpServer) {
-            return Q.nbind(httpServer.close, httpServer)();
-          }));
-        },
-
-        reopenConnections: function () {
-          return Q.all(httpServers.map(function (httpServer, index) {
-            return Q.Promise(function (resolve, reject) {
-              var netInterface = interfaces[index].ip;
-              var port = interfaces[index].port;
-              httpServer.listen(port, netInterface, function (err) {
-                err ? reject(err) : resolve(httpServer);
-                logger.info('uCoin server listening again on ' + netInterface + ' port ' + port);
-              });
+  return co(function *() {
+    for (let i = 0, len = interfaces.length; i < len; i++) {
+      let netInterface = interfaces[i];
+      try {
+        let httpServer = yield listenInterface(app, netInterface.ip, netInterface.port);
+        listenWebSocket(server, httpServer);
+        httpServers.push(httpServer);
+        logger.info('uCoin server listening on ' + netInterface.ip + ' port ' + netInterface.port);
+      } catch (err) {
+        logger.error('uCoin server cannot listen on ' + netInterface.ip + ' port ' + netInterface.port);
+      }
+    }
+
+    if (httpServers.length == 0){
+      throw 'uCoin does not have any interface to listen to.';
+    }
+
+    // Return API
+    return {
+
+      closeConnections: function () {
+        return Q.all(httpServers.map(function (httpServer) {
+          return Q.nbind(httpServer.close, httpServer)();
+        }));
+      },
+
+      reopenConnections: function () {
+        return Q.all(httpServers.map(function (httpServer, index) {
+          return Q.Promise(function (resolve, reject) {
+            var netInterface = interfaces[index].ip;
+            var port = interfaces[index].port;
+            httpServer.listen(port, netInterface, function (err) {
+              err ? reject(err) : resolve(httpServer);
+              logger.info('uCoin server listening again on ' + netInterface + ' port ' + port);
             });
-          }));
-        }
-      };
-    });
+          });
+        }));
+      }
+    };
+  });
 };
 
 function listenInterface(app, netInterface, port) {
   "use strict";
   return Q.Promise(function(resolve, reject){
     var httpServer = http.createServer(app);
-    httpServer.listen(port, netInterface, function(err){
-      err ? reject(err) : resolve(httpServer);
-    });
+    httpServer.on('error', reject);
+    httpServer.on('listening', resolve.bind(this, httpServer));
+    httpServer.listen(port, netInterface);
   });
 }
 
@@ -174,6 +181,7 @@ function listenWebSocket(server, httpServer) {
   var currentBlock = {};
   var blockSocket = io
     .of('/websocket/block')
+    .on('error', (err) => logger.error(err))
     .on('connection', function (socket) {
       socket.emit('block', currentBlock);
     });