'use strict'; module.exports = function (t, a, d) { var data, count = 0 , x = function (a, b, c) { data = [this, a, b, c, ++count]; } , y = t(x, 200), z = {}; a(data, undefined, "Setup"); y.call(z, 111, 'foo', false); a(data, undefined, "Immediately"); setTimeout(function () { a(data, undefined, "100ms"); setTimeout(function () { a.deep(data, [z, 111, 'foo', false, 1], "250ms"); data = null; clearTimeout(y()); setTimeout(function () { a(data, null, "Clear"); d(); }, 300); }, 150); }, 100); };