diff --git a/tentacoli.js b/tentacoli.js
index <HASH>..<HASH> 100644
--- a/tentacoli.js
+++ b/tentacoli.js
@@ -106,6 +106,12 @@ function Tentacoli (opts) {
   this._main.on('error', this.emit.bind(this, 'error'))
   this._parser.on('error', this.emit.bind(this, 'error'))
 
+  this.on('finish', function () {
+    Object.keys(this._requests).forEach(function (reqId) {
+      this._requests[reqId].callback(new Error('connection closed'))
+    }, this)
+  })
+
   var self = this
   function Reply () {
     this.response = null
diff --git a/test.js b/test.js
index <HASH>..<HASH> 100644
--- a/test.js
+++ b/test.js
@@ -303,3 +303,19 @@ test('errors if piping something errors', function (t) {
     t.fail('it never happens')
   })
 })
+
+test('errors if the connection fails', function (t) {
+  t.plan(2)
+
+  var s = setup()
+  var msg = 'the answer to life, the universe and everything'
+
+  s.sender.request(msg, function (err) {
+    t.ok(err, 'should error')
+  })
+
+  s.receiver.on('request', function (req, reply) {
+    t.deepEqual(req, msg, 'request matches')
+    s.receiver.end()
+  })
+})
Calls callbacks with errors if the connection closes.