Only after we actually more'd a value, do we reset the expiry. This actually makes more real world sense.
And fix Supply.uniq( :expires ) (without :with)
Names still provisionally awaiting agreement and spec
Only for the non :with case so far
Works on a supply of supplies. Taps the first one that arrives, and passes on its values. When another one arrives, closes the tap on the first and starts passing on values from the second, and so forth. Very useful for preventing race conditions when you have supplies that represent the latest work needed, and want to ignore previous work set in motion (e.g. auto-search text box that does some work to make suggestions).
We need to look at what .loads is actually supposed to do.
Waits for the value to have been stable for a certain amount of time before passing it along. If it changes within that time, then the timer is reset. Useful for any situation where you want the data to stabalize before doing further work.
Takes a closure and, for each supplied value, schedules the closure to run on another thread. It then more's a Supply (resulting in us having a supply of supplies) that will either have a single value more'd and then be done if the async work completes successfully, or quit if the work fails. Useful for kicking off work on the thread pool if you do not want to block up the thread pushing values at you (maybe 'cus you are reacting to UI events, but have some long-running work to kick off).
This allows a supply's more/done/quit to be scheduled on another scheduler. Useful in GUI situations, for example, where the final stage of some work needs to be done on some UI scheduler in order to have UI updates run on the UI thread.
So that proto's with "is cached" will not be optimized away.
We over-shared the blocks, meaning that once threads showed up we got into weird problems. Possibly recursion could reproduce it too. In the threads case, the CATCH in Lock.protect sometimes tried to unlock the wrong mutex.
Useful for tapping for (do) side-effects.
This prevents the split from exploding.