add @promise, @nodejscallback