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

			{
				// increase the recursion count while the function is running
				entry.recursionCount++;
				callback.apply();
				entry.recursionCount--;
			}
		}

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