Minor minor nit, which may not matter, but thought I'd bring it up just in case. With this code path, you're always evaluating both greater than or less than, thus calling the `orderer()` twice. But if it's not greater than, there's no need to check the less than.

I assume that `orderer` should be really fast so this isn't a real problem, but thought I'd mention it in case you can think of cases where maybe `orderer` isn't that fast and we do want to have short-circuiting logic work here.