It depends of the reference frame: if you sit on the blocked or on the blocker.
sleep()
is blocker according to the function that calls it, is unblocker according to the other functions that sit in line waiting for their turn.
When blocking code is executed, the function that contains the blocking code interrupts the execution and goes at the back of the line. By doing so it will unblock all the other threads (I don’t know if thread is technically correct here, but it gives the idea).
When all the other threads are finished with their job, or have reached some blocking code, the event loop will pick the next thread in that is waiting in line.