Need to come up with some cogent policy around what you do WRT elevate status within lib fn calls.
Right now, they elevate, do work, and lower.
If you expected the mode not to change (as a user of the library) you will be surprised.
Possible solutions:
Explicit "sticky bit"
Implicit "return in whatever mode you entered" <- this kinda seems right