Nice catch. Just checkout out the Q source. defer() is a wrapper around Object.create, which throws a TypeError on failure, so I think we're safe here.