Pull request is a good keyword.
If you cannot send your requirements upstream, you may wish to maintain a private fork/branch instead. And yes, you will be required to accomodate for upstream changes yourself to make sure that your additions keep working.
Apart from writing your own module from scratch, I don't really see another way to make this happen.