Javascript signals with promise like methods