diff --git a/awesome/context.py b/awesome/context.py
index <HASH>..<HASH> 100644
--- a/awesome/context.py
+++ b/awesome/context.py
@@ -23,6 +23,14 @@ def consuming(iterator):
 
 
 @contextmanager
+def calling(callable, *args, **kwargs):
+    try:
+        yield
+    finally:
+        callable(*args, **kwargs)
+
+
+@contextmanager
 def change_directory(path):
     original_path = os.getcwdu()
Added a `calling` context manager. The context manager makes sure the function is called with desired arguments when the context iis exited.