Fix error handling, also migrate to go1.3

nit: maybe add a little comment about the done channel. maybe reference the blog post we looked at