Improved error reporting while codereviewing the latest changes: When
invoke method fails, set session context into blueprint exception. Also,
SafeInvoke only creates a new exception if the current exception has a
different type from the expected one.