diff --git a/src/leap/soledad/server/_blobs.py b/src/leap/soledad/server/_blobs.py
index 21becbf3291e8ae21a60552f3a4ac23840c47377..42c0084122869e74c3c4cbc3c1faa477f2035d0b 100644
--- a/src/leap/soledad/server/_blobs.py
+++ b/src/leap/soledad/server/_blobs.py
@@ -159,7 +159,7 @@ class FilesystemBlobsBackend(object):
         count = 0
         for _, _, filenames in os.walk(base_path):
             count += len(filter(lambda i: not i.endswith('.flags'), filenames))
-        return json.dumps({"count": count})
+        return defer.succeed(count)
 
     def list_blobs(self, user, namespace='', order_by=None, deleted=False,
                    filter_flag=False):
@@ -279,7 +279,11 @@ class BlobsResource(resource.Resource):
         logger.info("http get: %s" % request.path)
         user, blob_id, namespace = self._validate(request)
         if not blob_id and request.args.get('only_count', [False])[0]:
-            return self._handler.count(user, namespace)
+            d = self._handler.count(user, namespace)
+            d.addCallback(lambda count: json.dumps({"count": count}))
+            d.addCallback(lambda count: request.write(count))
+            d.addCallback(lambda _: request.finish())
+            return NOT_DONE_YET
         elif not blob_id:
             order = request.args.get('order_by', [None])[0]
             filter_flag = request.args.get('filter_flag', [False])[0]
diff --git a/src/leap/soledad/server/interfaces.py b/src/leap/soledad/server/interfaces.py
index a7caf917b7ab0f9e95674224ee6563ce8869e2ac..a176264791913ec0101abb99392b9419899b69f4 100644
--- a/src/leap/soledad/server/interfaces.py
+++ b/src/leap/soledad/server/interfaces.py
@@ -98,9 +98,9 @@ class IBlobsBackend(Interface):
         :param namespace: Restrict the count to a certain namespace.
         :type namespace: str
 
-        :return: The number of blobs in the backend storage, possibly
-                 restricted to a certain namespace.
-        :rtype: int
+        :return: A deferred that fires with the number of blobs in the backend
+            storage, possibly restricted to a certain namespace.
+        :rtype: twisted.internet.defer.Deferred
         """
 
     def list_blobs(user, namespace='', order_by=None, deleted=False,
diff --git a/tests/blobs/test_fs_backend.py b/tests/blobs/test_fs_backend.py
index 69526cbfa17e0032d11090a84d007981ff301d26..e77e56b0bcc013735fe8600458f5d73cda2a164a 100644
--- a/tests/blobs/test_fs_backend.py
+++ b/tests/blobs/test_fs_backend.py
@@ -19,6 +19,7 @@ Tests for blobs backend on server side.
 """
 from twisted.trial import unittest
 from twisted.internet import defer
+from twisted.web.client import FileBodyProducer
 from twisted.web.test.test_web import DummyRequest
 from leap.common.files import mkdir_p
 from leap.soledad.server import _blobs
@@ -26,6 +27,8 @@ from mock import Mock
 import mock
 import os
 import base64
+import io
+import json
 import pytest
 
 
@@ -209,11 +212,27 @@ class FilesystemBackendTestCase(unittest.TestCase):
     @defer.inlineCallbacks
     def test_write_blob_using_namespace(self):
         backend = _blobs.FilesystemBlobsBackend(blobs_path=self.tempdir)
-        request = DummyRequest([''])
-        request.content = BytesIO('content')
-        yield backend.write_blob('user', 'blob_id', request,
+        producer = FileBodyProducer(io.BytesIO('content'))
+        yield backend.write_blob('user', 'blob_id', producer,
                                  namespace='custom')
-        default = yield backend.list_blobs('user', request)
-        custom = yield backend.list_blobs('user', request, namespace='custom')
+        default = yield backend.list_blobs('user')
+        custom = yield backend.list_blobs('user', namespace='custom')
         self.assertEquals([], json.loads(default))
         self.assertEquals(['blob_id'], json.loads(custom))
+
+    @pytest.mark.usefixtures("method_tmpdir")
+    @defer.inlineCallbacks
+    def test_count(self):
+        backend = _blobs.FilesystemBlobsBackend(blobs_path=self.tempdir)
+        content = 'blah'
+        yield backend.write_blob('user', 'blob_id_1', io.BytesIO(content))
+        yield backend.write_blob('user', 'blob_id_2', io.BytesIO(content))
+        yield backend.write_blob('user', 'blob_id_3', io.BytesIO(content))
+        count = yield backend.count('user')
+        self.assertEqual(3, count)
+        yield backend.write_blob('user', 'blob_id_1', io.BytesIO(content),
+                                 namespace='xfiles')
+        yield backend.write_blob('user', 'blob_id_2', io.BytesIO(content),
+                                 namespace='xfiles')
+        count = yield backend.count('user', namespace='xfiles')
+        self.assertEqual(2, count)