diff --git a/index.js b/index.js
index ea60c34..c392b80 100644
--- a/index.js
+++ b/index.js
@@ -38,6 +38,7 @@ function fastProxy (opts = {}) {
       const onResponse = opts.onResponse
       const rewriteHeaders = opts.rewriteHeaders || rewriteHeadersNoOp
       const rewriteRequestHeaders = opts.rewriteRequestHeaders || rewriteRequestHeadersNoOp
+      const onError = opts.onError
 
       const url = getReqUrl(source || req.url, cache, base, opts)
       const sourceHttp2 = req.httpVersionMajor === 2
@@ -88,6 +89,13 @@ function fastProxy (opts = {}) {
       }
       request(reqParams, (err, response) => {
         if (err) {
+
+          // allow for errors to be passed to a custom callback
+          if (onError) {
+            onError(err, req, res)
+            return
+          }
+
           // check if response has already been sent and all data has been flushed
           // before configuring error response headers
           if (res.sent === false || res.writableFinished === false) {