first promises-based parser combinator