couple clean ups for spawn

- uses tryLock(timeout) instead of if tryLock() else sleep(timeout)
- two cases of creating arrays to iterate over instead of just iterating
over the collection. toArray is implemented as an iterator call by
default anyway so I can't think of any reason for this
- collapsed a nested try statement