1to ACQUIRE(lockname) 2- create server, listen on lockname 3 - if enotsock, WATCH(lockname) 4 - if eaddrinuse, 5 - CONNECT(lockname) 6 - unref server 7 - lock has been acquired via server 8 ! on connection, place sockets in queue 9 10to RELEASE(lockname) 11- if acquired via connection 12 - disconnect 13- if acquired via server 14 - send "OK" to front-most connection 15 - when connection disconnects, RELEASE(lockname) 16- if acquired via filename 17 - unlink file 18 19to CONNECT(lockname) 20- net.connect(lockname) 21 - if enoent or socket termination, ACQUIRE(lockname) 22 - when server says "OK", 23 - lock has been acquired via connection 24 25to WATCH(lockname) 26- fs.watch(lockname) 27- on change, ACQUIRE(lockname) 28