Just an idea here - instead of passing both `limitFunction` and `timeout`, why not at this point construct a function instance that has the desired `timeout` (or any other options) baked into it? Then `target.limit` wouldn't have to know about the notion of `funcOptions`.