Lock requests issued from the same client using the same clientID will behave as you described. The engine assumes that if you are the same client instance, you already own the lock and it's not going to generate a conflict. In the Function Executor example, even though both instances are running on the same workstation, they get different clientID instances, so the engine knows they are separate "user sessions".
In a single application, if you want to look like distinct users, you need to re-open the file with a different clientID and attempt to read with a lock using that clientID. Then, you will get the status 84 if the lock is still active.