Fix #2: Run callback in same context as middleware