Add benchmarks and replace process.nextTick with setImmediate