Make thenCallback chainable
Support thenCallback chainable add tests
Allow undefined null values for thenCallback