(function() {
"use strict";
var storage = chrome.storage.sync;
var localStorage = null;
function getOutsideScope(property) {
    if (localStorage.hasOwnProperty(property)) {
        return localStorage[property];
    }
}
function fulfill(data) {
    return data;
}
function rejected(err) {
    log(err);
}
window.app.storage = {
    get: function(storageKey, storageProp) {
        var promise = new Promise(function(fullfill, reject) {
            chrome.storage.sync.get(storageKey, function(data) {
                if (data.hasOwnProperty(storageKey)) {
                    fullfill(data[storageKey]);
                } else {
                    reject(new Error(storageKey + " does not exist in the storage values."));
                }
            });
        });
        return promise.then(fulfill, rejected);
    },
    set: function(storageKey, storageItem) {
    },
    onChanged: function(fn) {
    }
};
})();
So the above is my IIFE wrapper for chrome storage, and well the return is being a pain in the bleep. So I decided to give Promises a try, this is my first time so don't be too rough on me on this. Basically this is what I want to do
 var property = app.storage.get("properties");
 //property should equal "value"
 //except it returns undefined 
So adding the promises it does get the value except it returns this
Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: "value"}
Am I doing something wrong with Promises I've tried reading HTML5Rocks, the MDN, and video tutorials except it doesn't really mention much of how to return a value. This does NOT work
get:function(storageKey,storageProp) {
    chrome.storage.sync.get(storageKey,function(data) {
        //for simplicity and no error checking -_-
        return data[storageKey];
    });
}
 
    