diff --git a/django_db_geventpool/utils.py b/django_db_geventpool/utils.py
index <HASH>..<HASH> 100644
--- a/django_db_geventpool/utils.py
+++ b/django_db_geventpool/utils.py
@@ -8,7 +8,8 @@ from django.core.signals import request_finished
 def close_connection(f):
     @wraps(f)
     def wrapper(*args, **kwargs):
-        result = f(*args, **kwargs)
-        request_finished.send(sender='greenlet')
-        return result
+        try:
+            return f(*args, **kwargs)
+        finally:
+            request_finished.send(sender='greenlet')
     return wrapper
ensuring that connection is closed, even if error is raised