diff --git a/js/NDN.js b/js/NDN.js
index 05ab75a..958a267 100644
--- a/js/NDN.js
+++ b/js/NDN.js
@@ -190,6 +190,8 @@
 	var outputData = encoder.getReducedOstream();
     encoder = null;
 		
+    // Make a local variable so it is not masked by an inner this.
+    var ndn = this;
 	var dataListener = {
 		onReceivedData : function(data) {
 			if (data == null || data == undefined || data.length == 0)
@@ -207,14 +209,14 @@
 					
                 // TODO: verify the content object and set kind to UPCALL_CONTENT.
 				var result = closure.upcall(Closure.UPCALL_CONTENT_UNVERIFIED,
-                               new UpcallInfo(this, interest, 0, co));
+                               new UpcallInfo(ndn, interest, 0, co));
                 if (result == Closure.RESULT_OK) {
                     // success
                 }
                 else if (result == Closure.RESULT_ERR)
                     dump("NDN.expressInterest: upcall returned RESULT_ERR.\n");
                 else if (result == Closure.RESULT_REEXPRESS)
-                    readAllFromSocket(this.host, this.port, outputData, dataListener);
+                    readAllFromSocket(ndn.host, ndn.port, outputData, dataListener);
                 else if (result == Closure.RESULT_VERIFY) {
                     // TODO: force verification of content.
                 }
