Well, the simple code you posted sure does seam like it should work. One problem I am combatting with Tessel is overloading it with events. There are a few modules I have been working with and if I send multiple commands one after another, it pretty much dies.
This probably isn't the problem you are having, but I bring it up just in case. I actually have problem with my demo not responding sometimes to HTTP request. The request comes in, but Tessel doesn't always respond (even though it shows request was received on console output).
After I refresh the page, and my second request goes through, I will often see the first request rebrodadcast, even though the page is no longer active, which could interfere with any new pending request.
These are a few things you might try to investigate, but I am sure @jia probably has a better handle on what could be going wrong