var Whenever = function(){
	var callbacks = [];
	var ready = false;
	var args;
	return {
		ready: function(){
			args = arguments;
			callbacks.forEach(function(callback){
				callback.apply(this, args);
			});
			ready = this;
		},
		whenReady: function(callback){
			if(ready){
				callback.apply(this, args);
			}else{
				callbacks.push(callback);
			}
		}
	}
};
@@ -82,16 +82,127 @@
 eturn %7B%0A
+%09%09get state()%7B%0A%09%09%09return %7B%0A%09%09%09%09ready: ready,%0A%09%09%09%09args: args,%0A%09%09%09%09pendingCallbacks: callbacks.length%0A%09%09%09%7D;%0A%09%09%7D,%0A
 %09%09ready:
@@ -214,16 +214,16 @@
 tion()%7B%0A
-
 %09%09%09args 
@@ -315,16 +315,35 @@
 %0A%09%09%09%7D);%0A
+%09%09%09callbacks = %5B%5D;%0A
 %09%09%09ready
@@ -346,19 +346,19 @@
 eady = t
-his
+rue
 ;%0A%09%09%7D,%0A%09

Add state object and improve memory usage