OK, So I seemed to have solved this problem, I'd like to know more about how the lookup function is handling User().email
In my application i need one of my global variables to show the user roll. This user roll is determined by a SharePoint list with roughly 10000 rows.
To do this i initially did the following:

This is flagging that the User().Email function has a delegation issue (even though it shows 'Data type: text') This should be able to delegate it, but it wasn't.
So i changed it to:

This clears the delegation warning, but still does not retrieve anything beyond the set limit (of 2000)
The solution I have found to this is:

Setting User().Email as a variable in itself solves the problem.
Is anyone able to tell me
A) if this is a good work around
B) what is actually happening with User().Email - is it showing text, but actually is first evaluating a record?
Thanks!