release control by queueing functions with setTimeout
by releasing control after 400 recursive calls, 801 operations were reached (approximately 270 before that)
boilerplate