I think I understand. Here is the T.get code :
Twitter.prototype.get = function (path, params, callback) { return this.request('GET', path, params, callback) }
As you can see, it expects this receive the request method. However, since we used wrapAsync without caring about the execution context ( access to this ), it fails.
Consider this example (you can copy / paste it into your browser console):
var obj = { foo : 'foo', logThis : function() { console.log(this); } };
If we execute obj.logThis() , we have: Object { foo: "foo", logThis: obj.logThis() }
But if we do the following ...
var otherLogThis = obj.logThis; otherLogThis();
It registers the Window object because we got this function from its context!
How to solve this problem? Link function? Difficult challenge?
No, Meteor has a solution. wrapAsync can have two parameters ... The second is context!
var Tget = Meteor.wrapAsync(T.get, T);
If you want to know more about JavaScript contexts, I suggest this book:
https://github.com/getify/You-Dont-Know-JS/
It is free and open source, and I am in no way affiliated with anything other than my deepest affection and fond memories of how my brain grows in every funny way when I read it.