 			{
 				var entry:CallbackEntry = _disposeCallbackEntries.shift() as CallbackEntry;
 				if (entry.callback != null && !WeaveAPI.SessionManager.objectWasDisposed(entry.context))
-					entry.callback.apply();
+					entry.callback.apply(entry.context || entry.callback['this']);
 			}
 		}
 		

						entry.recursionCount++; // increase count to signal that we are currently running this callback.
						
						if (_preCallback != null)
							_preCallback.apply(null, preCallbackParams);
						
						entry.callback.apply();
						
						entry.recursionCount--; // decrease count because the callback finished.
					}

			{
				// increase the recursion count while the function is running
				entry.recursionCount++;
				callback.apply(relevantContext || callback['this']);
				entry.recursionCount--;
			}
		}
